2011-08-11 88 views
3

我有一个项目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服务器中常见的本地仓库推,所以拜“改变中”每个人都得到最新的整合,尽快为他们发布的基础之上。

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

但是,如果Alice在项目B中提交了某些内容,则CI服务器会推送一个新的1.2.0共同回购,这比Bob在本地的更新;现在鲍勃获得了覆盖他的本地变化的通用版本。

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

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

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

回答

2

我想你想让你的本地解析器处于“强制模式”。在ivysettings.xml的本地解析器中设置force =“true”。

见的强制模式的描述:http://ant.apache.org/ivy/history/latest-milestone/settings/resolvers.html

+0

我看着力模式,但似乎并没有适合我的情况:它工作在解析级(而我想使它的工作方式不同对不同的依赖性),文档说“在内部它用'latest.integration'取代了所要求的修订”,这不是我所需要的。 感谢您的反馈。 –