いくつかのモジュールとメインの実行可能なプロジェクトがあります。私は共通のビルドファイルを持っています、そして
build.common.xml
<target name="build" >
<path id="libraries.classpath">
<fileset dir="${lib.dir}" includes="*.jar" />
</path>
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6">
<classpath refid="libraries.classpath" />
<classpath refid="modules.classpath" />
</javac>
</target>
..そして、すべてのモジュールは、build.xmlで独自の依存関係を宣言します。
<path id="modules.classpath">
<pathelement path="../ModuleA/${build.dir}" />
...
</path>
問題は、内部依存関係がない場合、次の例外が発生することです:「参照modules.classpathが見つかりません。」
そのための解決策は何ですか?オプションのクラスパス要素を宣言するにはどうすればよいですか?
注: 誰かが私のモジュールからjarを作成することを提案したい場合は、これを正当化してください。5〜10個の急速に変化するモジュールがあり、ビルドプロセスで不要な手順を実行したくありません。
更新:ビルドを2つの異なるターゲットに抽出し、それらの条件を作成しましたが、役に立ちませんでした(「false」をエコーし、モジュール依存でビルドします):
<target name="build">
<condition property="modules.classpath.set" else="false">
<isset property="modules.classpath"/>
</condition>
<echo message="modules.classpath is set: ${modules.classpath.set} " />
<antcall target="build-with-modules" />
<antcall target="build-without-modules" />
</target>
<target name="build-with-modules" if="modules.classpath.set">
<echo message="Building with module-dependencies" />
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6">
<classpath refid="libraries.classpath" />
<classpath refid="modules.classpath" />
</javac>
</target>
<target name="build-without-modules" unless="modules.classpath.set">
<echo message="Building with no dependent modules" />
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6">
<classpath refid="libraries.classpath" />
</javac>
</target>