2017-03-01 2 views
0

私たちはAnt w/IvyからMavenに移行しています。この動きの一環として、私たちはクラシファイアを使ってアイビーアーティファクトをMavenアーティファクトに分離するために使用する複数のジャーを持つプロジェクトを撮影しました。Ivyがクラシファイアを使ってjarに推移的依存関係を引き継ぎません

新しいMavenプロジェクトではこれに問題はありません。ただし、私たちのIvyプロジェクトでは、分類子にpom.xmlが見つかりません。私たちのMavenリポジトリに

は、プロジェクト内のjarファイルのすべてのための単一のpom.xml彼らです:

http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0.pom 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0.jar 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0-client.jar 
http://repo.vegicorp.com/l/com/vegicorp/foo/1.0.0/foo-1.0.0-test.jar 

は、デバッグAntビルドの出力を見ると、私はそれが弊社のMavenリポジトリに見ていることがわかり:

http://repo.vegicorp.com/com/vegicorp/foo/1.0.0/foo-1.0.0-client.pom 

それはpom.xmlファイルの名前にクラシファイアを追加しています! jarファイルを見つけてダウンロードすることができますが、pom.xmlがなければ、依存関係を把握することはできません。依存関係がダウンロードされないため、ビルドが失敗します。

ivysettings.xmlには、Pomファイルに分類子が追加されていないことをIvyに知らせる設定があると仮定していますが、わかりません。

この問題を解決するにはどうすればよいですか?私pom.xmlをリポジトリにコピーすることができます(これはArtifactoryですが、できるかどうかはわかりません)。 (多分、これを解決するのに役立つArtifactoryの設定がありますか?)

答えて

0

lBiblio resolverを使用するには、アイビーを言う必要があります。 m2compatibleフラグを使用すると、その1「のdoesnの場合は、偽

にusepomsフラグを設定 ことにより、POMSの使用を無効にすることができ

:あなたはlBilbioリンクからの引用、POMSを探して無効にすることができますpackager resolverでより洗練された設定を達成することができます。ページの下部には、クラシファイア属性がありません。

さらに(リゾルバの場合)、実際にアーティファクトを見つけるには、アーチファクトパターンを適切に設定する必要があります。

+0

私はIBibiloリゾルバを使用しています。私は、ダウンロードしているジャーの依存関係を見つけるために、ポムの使用を無効にしたくありません。私はpackagerリゾルバを設定しようとします。 –

+0

パッケージャリゾルバに問題があります。私はクラシファイアを見るか、クラシファイアを見ることができないので、POMかJARを見つけることができます。 Grr。 –

0

の周りで動作していることがわかりました。これは、私がこれまでにやっていたはずのやり方です。

私は私のivy.xmlファイルで、このように、依存関係を定義した

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default"/> 

すべてが<dependency>実体なしサブエンティティの下にあり、それがうまく働きました。デフォルトでは、pom.xmlが見つかり、それをivy.xml依存ファイルに変換し、jarもダウンロードしました。ノーサブエンティティと<dependency>エンティティ内のすべてのものを入れて、

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default" maven:classifier="client"/> 

再び:私たちは、分類器を追加することを始めたとき

は、我々はそれをこのようにしました。Ivyは com/vegicorp/foo/1.0.0/foo-1.0.0-client.jarのjarファイルを探しますが、POMは com/vegicorp/foo/1.0.0/foo-1.0.0-client.comにありません。私たちはクラシファイアを持ったサードパーティーを2〜3つしか持たず、他のジャーに依存していなかったため、これまでに気付かなかった。関連するPOMなしでjarファイルをダウンロードしても問題はありませんでした。

私たちのjarが他のjar依存関係を持っていたので、私たちが分類子を使って独自のjarを定義し始めたとき、すべてが壊れました。私は<artifact>エンティティを使用し、その中で分類器を置けば

しかし、すべてが働いた:

<dependency org="com.vegicorp" name="foo" version="1.0" 
    conf="compile->default"> 
    <artifact name="foo" ext="jar" maven:classifier="client"/> 
</dependency> 

アイビーはcom/vegicorp/foo/1.0.0で、リポジトリ内の正しい場所を見つけ、その後、com/vegicorp/foo/1.0.0/foo-1.0.0.pomで分類器なしでPOMをダウンロード。次に、クラスファイヤーを使用してこの場所にアーティファクトを配置します。com/vegicorp/foo/1.0.0/foo-1.0.0-client.jar

関連する問題