【发布时间】:2011-10-24 19:07:28
【问题描述】:
我有一个依赖于项目 B 的项目 A;两者都是积极开发的内部项目。 假设最新的 Project A 版本是 1.1.2,它依赖于 Project B 1.1.1。 现在我们正在开发 Project A 1.2.0,它依赖于也在开发中的 Project B 1.2.0。
<dependency org="my.org" name="projectB" rev="1.2.0" transitive="true" conf="..." changing="true"/>
项目 B 1.2.0 的新集成构建由 CI 服务器推送到公共本地存储库中,因此由于“更改”,每个人都可以在发布后立即获得最新的集成构建。
假设 Bob 正在项目 A 上开发一项新功能,需要对项目 B 进行一些修改;他在他的本地私有存储库中发布了一个新的 shapshot Project B 1.2.0,并且他在构建中被选中,因为它比公共存储库中的更新。到目前为止一切正常。
但是如果 Alice 在项目 B 中提交了一些东西,CI 服务器会在 common repo 上推送一个新的 1.2.0,它比 Bob 在本地拥有的更新;现在 Bob 获得了覆盖他本地更改的通用版本。
当然,我可以使用不同的名称(以一种巧妙的方式使用属性文件,名称不必以 ivy.xml 结尾),例如 Bob 的 1.2.0_snapshot,只要 Bob 需要本地版本,然后普通版ok后切换回1.2.0。 但是有没有办法强制使用状态为“快照”的工件(这将始终是本地构建的状态)而不是具有“集成”的工件(由 CI 服务器生成的工件将始终具有该状态)或更高?
我尝试了“latest.snapshot”,但它需要集成版本,如果更新的话。
处理这种模式的最佳方法是什么?
【问题讨论】:
标签: java ant continuous-integration dependencies ivy