我有一些模块和一个主要的可运行项目。我有通用的构建文件,并且
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>
问题是如果没有内部依赖,我会得到以下异常:“找不到参考模块。类路径。”
解决方案是什么?我如何声明一个可选的类路径元素?
注意: 如果有人想建议用我的模块创建 jar,请证明这一点。我将拥有 5-10 个快速变化的模块,并且我不想在构建过程中执行不必要的步骤。
更新:我将构建提取到两个不同的目标中并为它们创建了一个条件,但没有帮助(它与“错误”相呼应并使用模块依赖项构建):
<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>