防止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)