蚂蚁 - 忽略/跳过失踪的目标?

时间:2013-10-07 22:52:00

标签: ant

$ 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中。

2 个答案:

答案 0 :(得分:0)

您可能必须以编程方式调用ant。在Running ANT Programmatically Through Java

中进行了讨论

org.apache.tools.ant.Project 提供了目标列表和调用它的方法

答案 1 :(得分:0)

我不认为有一种方法可以测试目标(而不是文件)是否存在。我的建议是:

  1. 您多久构建一个缺少目标的旧版本?如果它很少见,您可以轻松地在CI配置中手动注释掉这些调用吗?
  2. 您可以将CI调用限制为一般整齐的设置:清洁,构建,测试,分散等吗?
  3. 您是否需要将CI配置拆分为多个作业?如果您确实需要某些版本中没有的目标,那么您的产品版本可能完全不同,需要分离到不同的CI作业中。那么构建目标不存在的作业是没有意义的。