2

Ivy のさまざまな構成を使用して、コンポーネントのいくつかの成果物を Maven リポジトリに公開しました。例として、私は同じことをするために次の方法(Ivy Documentation)を取りました..

<ivy-module version="1.0">
<info organisation="org.apache" module="filter"/>
<configurations>
<conf name="api"  description="only provide filter framework API"/>
<conf name="homemade-impl" extends="api" description="provide a home made implementation of our api"/>
</configurations>

<publications>
    <artifact name="filter-api" type="jar"  conf="api" ext="jar"/>
    <artifact name="filter-hmimpl" type="jar"  conf="homemade-impl" ext="jar"/>      
</publications>

</ivy-module>

上記の構成によると、生成される成果物はfilter-api.jarfilter-hmimpl.jarであり、pom ファイルfilter.pomを生成し、これを maven リポジトリーに公開しました。

今、次を使用して別のコンポーネントでアーティファクトfilter-apiを解決しようとすると..

    <dependency org="org.apache" name="filter" rev="3.1" conf="default->api"/>

しかし、それは機能していません.filter.pomには、機能させるためにこのようなモジュールが含まれている必要があると思います..

    <modules>
       <module>api</module> 
       <module>homemade-impl</module> 
    </modules>

私は正しいですか、そうであれば、ツタのさまざまなconfをmavenのモジュールにマップするにはどうすればよいですか。

4

2 に答える 2

5

Maven モジュールには通常 1 つのアーティファクトが含まれているため、Maven リポジトリに複数のファイルを公開するのは注意が必要です。Maven モジュールは、"classifier" 属性を使用して Maven 依存関係で参照される追加のモジュール アーティファクトをサポートします。

次の回答は、複数のファイルを Maven モジュールに公開する例を示しています。

ANT スクリプトがmakepomを使用して POM ファイルを生成していること、およびこれらのファイルが公開済みの成果物と見なされていることを確認します (ivy の公開セクションの一部)。

背景の詳細​​については、Maven の「スコープ」とアイビーの「構成」の違いを扱っている次の回答に興味があるかもしれません。

最後に、ivy ビルドが構成を使用する場合、makepomタスクを構成して、構成とスコープの間をマップすることができます。

<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/>
   <mapping conf="api" scope="compile"/>
</ivy:makepom>
于 2013-01-08T20:48:12.267 に答える
0

ほとんどの場合、問題は依存関係の宣言にあります。conf="default->api" を使用して、依存関係を「デフォルト」構成に取り込みます。しかし、それらを「コンパイル」confに入れ、コンパイルクラスパスに含める必要があります。

于 2013-10-30T22:40:30.470 に答える