0

これが正しい方法で行われているかどうかはわかりませんが、ツタのantタスクを使用してMavenに変換し、Mavenリポジトリにプッシュしようとしているアーティファクトがいくつかあります。

問題のコンポーネントはmystuff.services.commonです。

最初に私はpomを作ります...

    <ivy:makepom ivyfile="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-mystuff.services.common.xml" pomfile="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/poms/mystuff.services.common.pom">
        <mapping conf="default" scope="compile"/>
        <mapping conf="runtime" scope="runtime"/>
    </ivy:makepom>

次に、ちょっとしたハッカー-xmlタスクを使用してivyファイルにアーティファクト要素を挿入します。これは問題なく動作します...

    <xmltask source="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml" dest="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml">
        <insert path="/ivy-module/publications" >
            <![CDATA[
               <artifact name="mystuff.services.common" type="pom"/>
            ]]>
        </insert>
    </xmltask>

次に、これを行う方法について見てきたさまざまなドキュメントに従って、解決/配信/公開します。

    <ivy:resolve file="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/ivy-${resolved.revision}.xml"/>
    <!--<echoproperties/>-->
    <ivy:deliver conf="*" delivertarget="recursive-deliver"/>
    <ivy:publish resolver="myrepo-publish" publishivy="false" overwrite="true">
        <artifacts pattern="lib/myorg/[module]/[type]s/[artifact].[ext]"/>
    </ivy:publish>

そして、私が得るエラー:

build.xml:235: impossible to publish artifacts for
  myorg#mystuff.services.common;1.0.1: java.io.IOException: missing artifact
  myorg#mystuff.services.common;1.0.1!mystuff.services.common.pom

ivyファイルのアーティファクトからpomを除外すると、他のアーティファクトは正常に公開されます。

私は何が間違っているのですか?

これは、アーティファクトのpomエントリを挿入した後のivyファイルの外観です。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../../ivy-doc.xsl"?>
<ivy-module version="1.0">

  <info organisation="myorg" module="mystuff.services.common" revision="1.0.1" status="integration" publication="20130206204156"/>

  <configurations>
    <conf name="default"/>
    <conf name="compile" extends="default"/>
  </configurations>

  <publications>
    <artifact name="services.common" type="jar" conf="compile"/>
    <artifact name="services.common~test" type="jar" conf="compile"/>

    <artifact name="services.common" type="javadoc-zip" ext="zip" conf="compile"/>
    <artifact name="services.common~test" type="javadoc-zip" ext="zip" conf="compile"/>

    <artifact name="services.common" type="src-zip" ext="zip" conf="compile"/>
    <artifact name="services.common~test" type="src-zip" ext="zip" conf="compile"/>

    <artifact name="com.myorg.mystuffservices.common" type="osgi-module" ext="jar" conf="compile"/>
    <artifact name="services.common" type="pom"/>
  </publications>

  <dependencies>
    <dependency org="org.testng" name="testng" rev="5.11" conf="compile->compile-15"/>
  </dependencies>

</ivy-module>
4

1 に答える 1

2

公開には、「makepom」タスクによって生成されたpomを見つけるアーティファクトパターンがありません。

場所を変更するか、公開タスクにアーティファクトタグを追加します。

<ivy:publish resolver="myrepo-publish" publishivy="false" overwrite="true">
    <artifacts pattern="lib/myorg/[module]/[type]s/[artifact].[ext]"/>
    <artifacts pattern="${ivy.lib.dir}/ivy/cache/myorg/mystuff.services.common/poms/mystuff.services.common.pom"/>
</ivy:publish>

また、なぜPOMエントリをivyファイルに挿入しているのかわかりません。出版物のセクションにリストしてみませんか?

詳細な例については、以下を参照してください。

于 2013-02-12T22:12:12.433 に答える