私は Ant を初めて使用します。のように、私はこのタスクを達成するために 2 日前に学習を開始しました。
私がやろうとしているのは、他のいくつかのantスクリプトを呼び出す「マスター」antスクリプトを作成することです。例えば:
Project A
- contains build.xml, target "makeProjectAjar"
- output: A.jar
Project B
- contains build.xml, target "makeProjectBjar"
- output: B.jar
Project C
- contains build.xml, target "makeProjectCjar"
- output: C.jar
Project D
- contains build.xml, target "finalPackage"
- Must first build Project A, Project B, Project C
- Copy A.jar, B.jar, C.jar to Project D
- Package all of this into D.jar
現在、A、B、および C の個々のビルドがすべて機能しています。つまり、これらのフォルダーのいずれかから 'ant' を実行すると、プロジェクトがビルドされ、jar ファイルが生成されます。この方法で A、B、および C をビルドすると、3 つの jar ファイルが作成されます。次に、それらを D にコピーして、最終的な jar にパッケージ化します。それはうまくいきます。
しかし、私が望むのは、プロジェクト D の build.xml 内から A、B、および C ビルドをトリガーできるようにすることです。私はこれを試しました:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonJava" default="makeCommonJavaJar" basedir=".">
<import file="../Common/build.xml"/>
<import file="../CommonAndroid/build.xml"/>
<target name="makeCommonJavaJar" description="Create a jar for the CommonJava project"
depends="clean">
<mkdir dir="build" />
<jar jarfile="./build/commonjava.jar" includes="*.class" />
</target>
<target name="clean">
<delete dir="build" />
</target>
<target name="build+package" description="Build all prerequisites and package them">
<antcall target="makeCommonJar"/>
<antcall target="makeAndroidJar"/>
</target>
</project>
makeCommonJar は Common/build.xml (プロジェクト A) のターゲットであり、makeAndroidJar は ../CommonAndroid/build.xml (プロジェクト B) のターゲットです。ただし、を使用する<import>
と、呼び出しフォルダーのコンテキストから実行されるようです。プロジェクト B が参照するリソースは、プロジェクト D から実行されているため、利用できないことを意味します。それは理にかなっていますか?
短い質問ですが、Ant を使用して、他のプロジェクトを最初にビルドするために、他のプロジェクトの build.xml ファイルを呼び出すにはどうすればよいですか?