常春藤:强制本地快照依赖

时间:2011-08-11 08:59:46

标签: java ant continuous-integration dependencies ivy

我的项目A取决于项目B;两者都是积极发展的内部项目。 假设最新的Project A版本是1.1.2,这取决于项目B 1.1.1。 现在我们正在开发项目A 1.2.0,它依赖于项目B 1.2.0也在开发中。

<dependency org="my.org" name="projectB" rev="1.2.0" transitive="true" conf="..." changing="true"/>

项目B 1.2.0的新集成构建由公共本地存储库中的CI服务器推送,因此,由于“更改”,每个人在发布后立即获得最新的集成构建。

Say Bob正在为项目A开发一个新功能,需要对项目B进行一些修改;他在他的本地私有存储库中发布了一个新的shapshot Project B 1.2.0,并且他在构建中被选中,因为它比公共存储库中的更新。一切都好。

但是如果Alice在Project B中提交了一些东西,那么CI服务器会在普通仓库上推送一个新的1.2.0,这比Bob在本地的仓库更新。现在Bob获得了覆盖其本地更改的通用版本。

当然我可以使用不同的名称(使用名称不必以ivy.xml结尾的聪明方式使用属性文件),类似于Bob的1.2.0_snapshot,只要Bob需要本地版本,然后当通用版本正常时切换回1.2.0。 但是有没有办法强制使用状态为“快照”的工件(这将始终是本地构建的状态)而不是具有“集成”的工件(由CI服务器生成的工具将始终具有该状态)或高?

我尝试了“latest.snapshot”,但它需要集成版本,如果更新的话。

处理这种模式的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我认为你希望你的本地解析器处于“强制模式”。在ivysettings.xml中的本地解析程序上设置force =“true”。

请参阅强制模式说明:http://ant.apache.org/ivy/history/latest-milestone/settings/resolvers.html