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