6


7

jarをlibディレクトリにコピーせずにivyを使用して戦争を構築する方法

私の目標は、antビルドスクリプトにwarファイルをビルドさせ、このプロジェクトが依存することをivyが知っているjarを含めることです。 現時点で思いつく最高のコードは次のとおりです


このコードの問題は、jarを2回コピーすることです。 dist / libディレクトリに移動して、作成された戦争に再び入ります。 それは機能しますが、より良い方法があるという感覚を揺さぶることはできません。

私がやりたいのは、次のようなものです


問題は、libタグがあらゆる種類のrefidを受け取らないことです。 何かアイデアがありますか、それとも余分なファイルコピーセットがありますか?

2 Answer


4


ここでの問題は、* lib タグがwarアーカイブの_lib_サブディレクトリにファイルをターゲットとするカスタム fileset であることです。 カスタム war *タスクを作成することは可能かもしれませんが、努力する価値はないと思います。

ivyが戦争の依存関係を管理する方法を改善したい場合、構成を使用することをお勧めしますか?

実行時の依存関係を記述する構成を作成します。


その後、(パターンを使用して)* war タスクの lib *タグを使用して簡単に含めることができる専用のディレクトリにそれらを取得します。


このアプローチの利点は、各プロジェクトの依存関係のivy * conf *属性を使用して、jarをwarファイルに含めるかどうかを最終的に決定することです。 ビルドファイルはもう気にしません。

結論として、私はあなたの投稿のポイントがあなたのjarファイルの複数のコピーに関する懸念であったことを理解しています…​ 提案されたアプローチを使用すると、コピーがさらに複数になりますが、後でそれらを削除する_clean_ターゲットがあれば、これは問題ではないと提出します。


4


Ant 1.8を使用している場合、ここで説明されている手法を使用できます。http://www.beilers.com/2010/06/ivy-dependency-management-lessons-learned-and-ant-1-8-mapped-リソース/

例: