私たちはそれぞれのサブプロジェクトに1つのAntスクリプトを用意しています。最後に、マスタービルドスクリプトからこれらのすべてを実行し、プロジェクト全体をパッケージ化するためにいくつかのハウスクリーニングを行いたいとします。各Antスクリプトの名前はant.xml
で、そのプロジェクトのサブディレクトリにあります。それぞれimport
を使用してant-commons.xml
をインポートし、そこにある特定のターゲットの一部を上書きします。Antマスタービルドファイルが正常に動作しないのはなぜですか?
例えば、プロジェクトの一つは適切classpath
を設定するために、このすべて、理論的には、今
(ANT-コモンズ1.4を使用して)1.5にsource
とtarget
を設定するために、compile
ターゲットをオーバーライド簡単に聞こえます。
最初のいくつかのサブプロジェクトが正常に動作:実際に何が起こる
<project name="Retain" basedir="." default="main">
<target name="main">
<ant dir="SharedJava" antfile="ant.xml" target="clean"/>
<ant dir="SharedJava" antfile="ant.xml" target="copy_current"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="clean"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainLib" antfile="ant.xml" target="clean"/>
<ant dir="RetainLib" antfile="ant.xml" inheritAll="false" target="copy_current"/>
<ant dir="RetainIndex" antfile="ant.xml" target="clean"/>
<ant dir="RetainIndex" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainPersist" antfile="ant.xml" target="clean"/>
<ant dir="RetainPersist" antfile="ant.xml" target="copy_current"/>
</target>
</project>
:ここでは、マスタービルドスクリプトです。実際にはSharedJava
のjarファイルへの参照が必要なRetainLib
は、それが見つからない方法について泣き叫ぶことができません。 RetainLib
を削除したときに、RetainIndex
が失敗しました.1.4のターゲットファイルでジェネリックを使用しないでください。
周りをプレイした後、私はかなり単純に、オーバーライドされたものの代わりにant-commons
のコンパイルターゲットを実行することを主張していました。
なぜですか?どうすればこの問題を回避できますか? (エレガントな私が意味する - 明らかに、私は完全にアリ・コモンズの使用を取り除くことができ、私は物事がうまくいくに違いない。)私は仕事上のinheritAll =「false」を属性を使用することをお勧めし
Nope。ごめんなさい。あなたのアドバイスは、結果から少なくとも間違っています。 1. dirを削除し、inheritFalseを指定すると、呼び出されたant.xmlスクリプトがディレクトリとして混乱するため、ビルドはただちに失敗します。 2。dirが復元されて栄光と正当な場所:)とinheritFalse、正確に説明されているように、ビルドに失敗します。 –