$ ant clean compile notexist install
这里我得到BUILD FAILED
因为notexist
不存在作为目标,这是预期的。但是,无论如何只是忽略或跳过未知目标?或者可能将未知目标映射到已知目标(对我来说这是一个无操作目标)?
我们正在使用Atlassian Bamboo作为CI服务器,每当我们想要在构建中添加ant目标时,我们就有可能破坏旧的代码分支。这是因为如果我们通过CI运行旧版本,它可能不包含目标,因此会失败。因此,我们将简化为编辑build.xml
文件,并使用depends
或<ant>
,但这并不能为我们提供所需的灵活性。
今天我们有:
ant clean selenium.tests
我们想添加一个新目标来测试我们的REST服务。目标是rest.tests
。因此,我希望我的命令是
ant clean selenium.tests rest.tests
但对于旧分支,rest.tests
尚不存在。到目前为止,我们的解决方案是将rest.tests
添加为selenium-tests
的依赖项(因为我们的build.xml受版本控制),但这意味着我们无法自行运行selenium.tests
事后看来,我们应该刚刚创建了一个代理目标,例如integration.tests
(我们已经使用test
进行单元测试),这将委托给这两个目标。但除非我的原始问题有解决方案,否则我们甚至无法将integration.tests
添加到CI中。
答案 0 :(得分:0)
您可能必须以编程方式调用ant。在Running ANT Programmatically Through Java
中进行了讨论org.apache.tools.ant.Project 提供了目标列表和调用它的方法
答案 1 :(得分:0)
我不认为有一种方法可以测试目标(而不是文件)是否存在。我的建议是: