我已经手工构建了我项目的构建系统(主要使用Python+Hudson)。我经常需要做的一件事是从上游的Hudson/Jenkins那里获取文物。
这些工件几乎可以是任何东西——例如,一个装满要处理的业务数据的zip文件,甚至一个包含大量必须测试的python代码的egg。我们系统中几乎每一个重要的工作都依赖于其他Hudson工作产生的工件。
我的经理建议构建系统的下一次迭代应该用Ant替换我手工制作的一些组件。下一次迭代的目的是降低我们系统的复杂性,并使其与其他主要使用Java和Ant(以及很少使用Python)的团队的工作保持一致。
我个人也很想找个借口来学习蚂蚁。这似乎是一个非常有用的工具。
因此,为了不重新发明轮子,我肯定需要一个Ant任务,它可以从特定的Hudson构建中获取工件。这样的事情存在吗。如果它不存在,是否有接近我需求的东西可以自定义?我宁愿不重新发明轮子。
更新1:我们非常喜欢100%免费的开源工具。团队中的每个人都对蚂蚁很满意,但小牛队正试图摆脱它。
正确的解决方案是将Hudson/Jenkins的工件发布到工件管理器,如Nexus或Artifactory,然后用Ivy或Gradle之类的东西提取工件版本。
如果必须自己获取依赖项,可以使用get
任务。示例:
<get src="http://jenkins/job/project-name/lastSuccessfulBuild/artifact/foo.jar"
dest="/path/to/local/file"/>
然而,我同意Stefan的观点——依赖性管理可以通过他回答中提到的工具更好地完成,而不是使用Ant手动将其删除
如果你刚刚开始学习ANT,那么我建议你学习gradle,它已经集成了依赖部分,而且更容易使用。此外,如果你需要一个特定的ANT任务,你可以简单地从gradle调用它,甚至导入整个ANT脚本。
否则,我同意斯特凡·肯德尔的回答。