2009-07-07 31 views
11

アリ依存関係管理はあまり言い表せないほど素晴らしいと思われます...しかし、希望はありますか? 今日はMaven、Ivyなどのビルドやプロジェクト管理のためのより良い選択肢がありますが、依存関係を管理するための「アリのベストプラクティス」があるかどうか疑問に思っていました。アリ依存関係管理

具体的に私の場合は私が持っている:

w.war 

a.jar 
b.jar 
c.jar 

w.warは、私は、WebサーバーにデプロイするWARファイルです。 warファイルでは、私はa.jarを使用します。 a.jarはb.jarに依存していますので、b.jarをwにうまくパッケージ化しています。これは一種の問題です。 b.jarがc.jarに依存するときに問題が発生します。 a.jarの作成者はb.jarへの依存性を知っているので、b.jarをw.warにパッケージ化できますが、b.jarのc.jarへの依存性は認識していません。さらに、b.jarの作成者は、後で "b.jarがe.jarに依存する"などの依存関係をさらに追加する可能性があるため、a.jarの作成者は、これらの依存関係を追加する機会はありません。

"a depends on b"と "b depends on c"(別のbuild.xmlファイル)を定義し、ant magicを使用してすべてをw.warにコンパイルします。 これは可能ですか?そうでない場合、ベストプラクティスはありますか?

私はこれだけですが、書いてみるのはすべてメイヴンですが、それはたくさんの仕事です...アリに希望はありますか?

+0

自分の依存関係管理拡張機能をantに使用しています:http://trapdoor.org/projects/3/ あなたの状況に役立つかもしれませんが、それは私のためにはうまくいきます。 – Draemon

+0

従属性はかなり微妙です(私は思います)。 'b.jar'を使用するには' c.jar'が必要です。 _build_ 'b.jar'に' c.jar'は必要ありません。そうですか? –

答えて

15

すでにAntを使用している場合は、Ivyを依存関係管理に使用することをお勧めします。

http://ant.apache.org/ivy/

これは、依存関係の操作のためのAntタスクの豊富なセットを提供します。

3

ビルドシステムとの組み合わせによる依存関係管理は難しいです。あなたが本当に簡単な例を持っていない限り、これは簡単なことではないので、あなたはいくつかの仕事を投資しなければなりません。

Antを使いたい、または使用する必要がある場合は、間違いなくIvyを選択してください。 Antの正式なサブプロジェクトであるため、比較的スムーズに統合されます。

+2

私は幻想を超えていますが、ありがとう;-) – Ran

1

私は過去4年間(Apacheに参加する前の)Ivyを使用していましたが、後悔はありませんでした。

あなたのAntファイルはあまり知られていませんが、決定的な答えを出すのは少し難しいですが、プロジェクトは一度に構築されていると思います。つまり、アーティファクト(またはjarファイル)を中央のリポジトリに個別に公開することはできません。

解決策は、中央(共通ライブラリ用)リポジトリとローカル(プロジェクト用)リポジトリの両方を使用することです。あなたは私の公共プロジェクト、特にivysettings.xmlファイルを見てみることができます。なぜなら、まさにこの原理をそのまま使用しているからです。ここで

0

のための新しいオープンソースのビルドシステムがありますJavaはEBuildfeatures)と呼ばれ、依存関係管理が特に優れているため、Ant/Ivyの優れた代替手段です。

deficiencies of Antと、Mavenの詳細な記事があります。