防止ant依赖被并行调用多次
Preventing ant dependencies to be called multiple times in parallel
背景:
我有一个编译 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 的替代方法?
P.S。我找到了 a similar question here 但没有给出答案。
只需在目标 "compile" 中使用 unless
属性,如:
...
<target name="compile" unless="compileDone">
<property name="compileDone" value="true"/>
<sequential>
<echo message="compile"/>
</sequential>
</target>
...
你的目标只会被执行一次:o)
背景:
我有一个编译 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 的替代方法?
P.S。我找到了 a similar question here 但没有给出答案。
只需在目标 "compile" 中使用 unless
属性,如:
...
<target name="compile" unless="compileDone">
<property name="compileDone" value="true"/>
<sequential>
<echo message="compile"/>
</sequential>
</target>
...
你的目标只会被执行一次:o)