背景:我有一个构建过程,它编译 java 代码并使用已编译的类构建两个 jar(每个 jar 都是不同的子集,一些类都出现在两者中)。
现在,我被要求用户能够单独构建每个 jar,但也能够并行构建它们(因为它大大减少了总构建时间)。
所以我想出了一个结构如下的脚本:
<project>
<target name="compile">
<sequential>
<echo message="compile"/>
</sequential>
</target>
<target name="jar1" depends="compile">
<sequential>
<echo message="jar1"/>
</sequential>
</target>
<target name="jar2" depends="compile">
<sequential>
<echo message="jar2"/>
</sequential>
</target>
<target name="all-jars">
<parallel>
<antcall target="jar1"/>
<antcall target="jar2"/>
</parallel>
</target>
</project>
问题是,当使用“all-jars”目标时,“compile”目标会被执行两次。有没有标准的方法来防止它?更好的是,有没有使用 antcall 的替代方法?
PS我在这里发现了一个类似的问题,但没有给出答案。