gpt4 book ai didi

java - ant 依赖与 antcall

转载 作者:IT老高 更新时间:2023-10-28 20:35:35 31 4
gpt4 key购买 nike

在定义顺序构建步骤时,我使用 target 元素的 depends 属性。我最近看到了一个 ant 文件,其中构建序列由目标内的 antcall 元素定义。举例说明:

<target name="a" depends="b">
...</target>

<target name="a">
<antcall target="b"/>
...</target>

这两种方法有真正的区别吗?其中一个更可取吗?

最佳答案

最大的不同是Ant会保证通过depends声明的依赖被调用最多一次。例如:

<target name="a" />

<target name="b" depends="a" />

<target name="c" depends="a" />

<target name="d" depends="b, c" />

如果我调用目标 d,则调用 bc。然而,a 只被调用一次(即使 bc 都依赖它)。

现在假设我们决定使用 antcall 而不是依赖于目标 d:

<target name="d">
<antcall target="b" />
<antcall target="c" />
</target>

调用目标 d 现在将调用目标 bc;然而,目标 a 将被调用两次,一次用于 b,另一次用于 c

换句话说,antcall 回避了作为 Ant 基石的正常依赖规则。

我不认为应该使用 antcall 来替代普通的 Ant 类依赖项;这就是 depends 的用途。那么什么时候使用呢? antcall 任务确实允许您控制定义了哪些属性和引用(这就是创建新 Ant 环境的原因——以及它如此缓慢的原因),因此它可以用于创建相同的变体事物;例如,可能有两个 jar ,一个有调试符号,一个没有调试符号。

然而,过度使用 antcall 会产生缓慢、脆弱且难以维护的构建脚本。把它想象成 Ant 的 goto——它是邪恶的。大多数编写良好的构建脚本根本不需要它,除非在特殊情况下。

关于java - ant 依赖与 antcall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936947/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com