Maven 2 如何在cloudbees中创建单独的快照回购

Maven 2 如何在cloudbees中创建单独的快照回购,maven-2,jenkins,cloudbees,Maven 2,Jenkins,Cloudbees,我们有一个CloudBees项目,有几个“工作”。其中一些工作对应于独立更新的单独谷歌项目 我们的问题是,所有的更新都指向同一个快照repo,所以当两个开发人员A和B在同一个项目上工作,并且A正在推动他的更改时,我们得到的是最新版本,而不是他想要的本地版本 理想情况下,我们希望每个谷歌项目都有一个快照回购,这样它们就不会相互重叠 如何在同一个CloudBees项目中创建不同的快照repo,并将它们关联到不同的项目?从maven的角度来看,在您的场景中,如果B不想获得“最后一个稳定版本”,它不应该

我们有一个CloudBees项目,有几个“工作”。其中一些工作对应于独立更新的单独谷歌项目

我们的问题是,所有的更新都指向同一个快照repo,所以当两个开发人员A和B在同一个项目上工作,并且A正在推动他的更改时,我们得到的是最新版本,而不是他想要的本地版本

理想情况下,我们希望每个谷歌项目都有一个快照回购,这样它们就不会相互重叠


如何在同一个CloudBees项目中创建不同的快照repo,并将它们关联到不同的项目?

从maven的角度来看,在您的场景中,如果B不想获得“最后一个稳定版本”,它不应该依赖快照


您还可以使用“private local repository”高级选项隔离jenkins jobs maven本地存储库,这样B将只看到B的最后一个公开部署版本,而不是从maven的角度来看的最后一个构建版本。在您的场景中,如果B不想获得“最后一个稳定版本”,则B不应该依赖快照


您还可以使用“private local repository”高级选项隔离jenkins jobs maven本地存储库,这样B将只看到B的最后一个公开部署版本,而不是最后一个构建版本如果您真的想为不同的项目使用不同的快照repo,那么您需要使用“private local repository”每个作业的功能,以确保作业从其自己的快照repo中提取依赖项

此外,您需要为每个作业提供单独的settings.xml,否则它们将从同一远程存储库中提取依赖项

然后,您需要使用Forge Repositories屏幕在CloudBees服务中创建一个单独的Maven WebDAV存储库。请注意,如果您处于免费层,那么Maven WebDAV存储库的数量可能会达到极限。。。你可以作弊!通过告诉settings.xml存储库路径实际上是路径的子路径,例如and和not

这基本上意味着project1和project2将看到完全独立的远程存储库

所有这些都是为你做的大量工作。。。。还有很多痛苦要处理。。。。当你在Maven中做了大量的工作时,你会大声喊出你做错了

也许你需要停下来想想你在哪里调用Maven反模式,然后从反模式中退出

我经常看到的一种反模式是,当您不了解自己在做什么时,在
verify
阶段之后运行构建

一般来说,我建议CI系统永远不要为非发布版本运行
deploy
,因为它会影响开发人员。。。[解决方法是运行
deploy
,但将其部署到仅由CI系统使用的单独快照存储库]

这就是为什么我也倾向于在CI系统上只进行
验证
,就好像您要进行
安装
一样,您需要每个作业都有自己的私有maven存储库。。。尽管有时候你需要走那么远的路来零碎地把工作分解


经验法则是,开发人员的机器应该具有开发人员构建的依赖项,而不是在Maven刷新时随机获得更新—无论您在
settings.xml
interval

中配置了什么,都要进行快照—如果您真的想为不同的项目使用不同的快照repo,那么您需要为每个作业使用“专用本地存储库”功能,以确保作业从其自己的快照repo中提取依赖项

此外,您需要为每个作业提供单独的settings.xml,否则它们将从同一远程存储库中提取依赖项

然后,您需要使用Forge Repositories屏幕在CloudBees服务中创建一个单独的Maven WebDAV存储库。请注意,如果您处于免费层,那么Maven WebDAV存储库的数量可能会达到极限。。。你可以作弊!通过告诉settings.xml存储库路径实际上是路径的子路径,例如and和not

这基本上意味着project1和project2将看到完全独立的远程存储库

所有这些都是为你做的大量工作。。。。还有很多痛苦要处理。。。。当你在Maven中做了大量的工作时,你会大声喊出你做错了

也许你需要停下来想想你在哪里调用Maven反模式,然后从反模式中退出

我经常看到的一种反模式是,当您不了解自己在做什么时,在
verify
阶段之后运行构建

一般来说,我建议CI系统永远不要为非发布版本运行
deploy
,因为它会影响开发人员。。。[解决方法是运行
deploy
,但将其部署到仅由CI系统使用的单独快照存储库]

这就是为什么我也倾向于在CI系统上只进行
验证
,就好像您要进行
安装
一样,您需要每个作业都有自己的私有maven存储库。。。尽管有时候你需要走那么远的路来零碎地把工作分解


经验法则是,开发人员的机器应该具有开发人员构建的依赖项,而不是在Maven刷新时随机获得更新—无论您在
设置中配置了什么,都会对其进行快照。xml
interval

您建议的“只进行验证”非常有趣。但是我很确定它对reactor构建不起作用,在reactor构建中,您有多个相互依赖的模块。如果它们在同一个reactor中,
verify
将起作用,就像在
package
阶段之后一样,工件被打包并连接到reactor。唯一的问题是有些人使用的插件不支持你