我们有一个包含多个“工作”的CloudBees项目。其中一些工作对应于单独更新的单独Google项目。
我们的问题是所有更新都转到同一个快照仓库,所以当两个开发人员A和B正在处理同一个项目而A正在推动他的更改时,B得到了最新版本,而不是本地版本我想。
理想情况下,我们希望每个Google项目都有一个快照仓库,因此它们不会相互重叠。
如何在同一个CloudBees项目中创建不同的快照存储库并将它们关联到不同的项目?
答案 0 :(得分:3)
如果您真的想为不同的项目使用不同的快照存储库,那么您需要为每个作业使用“私有本地存储库”功能,以确保作业从其自己的快照存储库中提取依赖关系。
此外,您需要为每个作业提供单独的settings.xml,否则他们将从同一个远程存储库中提取依赖项。
然后,您需要使用Forge Repositories屏幕在CloudBees服务中创建单独的Maven WebDAV存储库。请注意,如果您在免费套餐中,您可能会受到Maven WebDAV存储库数量的限制......您可能会作弊!通过告诉settings.xml存储库路径实际上是路径的子路径,例如https://user1650693.forge.cloudbees.com/repositories/snapshot/project1和https://user1650693.forge.cloudbees.com/repositories/snapshot/project2而非https://user1650693.forge.cloudbees.com/repositories/snapshot
这实际上意味着project1和project2会看到完全独立的远程存储库。
所有这些都是代表你做的很多事情......管理很多痛苦......当你在Maven做很多工作时,大声尖叫你做错了!
也许你需要暂停并思考你在调用Maven反模式的地方并远离反模式。
当我不明白你在做什么时,我看到的一个反模式是在verify
阶段之后运行构建。
一般情况下,我建议CI系统永远不会为非发布版本运行deploy
因为它会影响开发人员...... [解决方法是运行deploy
但是要单独运行-SNAPSHOT仅供CI系统使用的存储库]
这就是为什么我也赞成只在CI系统上verify
,就像你到install
一样,你需要每个工作都拥有自己的私有maven存储库......虽然有时候你需要走那么远才能零碎地打破工作。
经验法则是开发人员的机器应该具有开发人员构建的依赖关系,并且不会在Maven刷新-SNAPSHOTs的随机奇思妙想中获得每个在settings.xml
间隔中配置的任何内容的更新
答案 1 :(得分:2)
从maven的角度来看,在你的场景中,如果B不想获得“最后稳定版本”,B不应该依赖A SNAPSHOT。
您还可以使用“私有本地存储库”高级选项“隔离您的jenkins作业maven local-repository”,这样B只能看到最后一个公开部署的B版本,而不是最后一个构建的版本