在执行脚本时,是否有可能从Ant目标中排除一些目标?

12

在Ant中,如果想要执行多个目标,可以像这样实现:

ant target1 target2 target3

另一种方法可能是创建类似于target4的目标,例如:

<target name="target4" depends="target1,target2,target3" />

但问题是,我的目标定义之一是:

<target name="buildApp" depends="init,copy-all-requiredfiles-local,wait-to-merge,compile,createWAR,deployAll"/>

如果我想执行buildApp,它会像往常一样同时运行所有相关的目标。

有没有可能只执行buildApp目标而不执行deployAll目标呢?


1
你的目标和依赖关系很有趣。我认为deployAll依赖于buildApp而不是反过来。 - Miserable Variable
2个回答

20

一个可能的解决方案是给你的deployAll目标添加一个条件,如下所示。

<target name="depolyAll" unless="doNotDeploy">
...
</target>

那么当你想在命令行中运行buildApp而不使用deployAll时,只需执行以下操作

ant -DdoNotDeploy=true buildAll

顺便说一句,注意除非只检查属性是否已设置,而不是值是什么。

但这种行为应该有所记录并且有点隐晦。

我会考虑明确创建第二个构建目标,例如buildAllWithoutDeploy,它只会漏掉部署目标。


2
为什么不为此创建另一个目标?
<target name="buildAppNoDeploy" depends="init,copy-all-requiredfiles-local,wait-to-merge,compile,createWAR"/>

当然我可以创建另一个目标,但我没有预料到这种情况。 :) - Rakesh Juyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接