詹金斯安装最近期建成神器到本地Maven仓库,甚至当工作与只有一个目标,执行clean package
。
这造成了一个问题,当有人不小心犯了共享库的更新版本不增加库的POM版本号。 詹金斯生成JAR,它安装到本地仓库,然后(根据配置)部署神器我们共同的Nexus仓库。 的Nexus相当正确地拒绝接受新的神器,因为它已经有一个给定的版本号的版本。
一段时间以后,詹金斯建立依赖于该库项目,并使用该库的副本从本地的仓库,而不是关系的影响。 因此,该项目得到了建有错误版本的代码。
看来有两种可能的解决方案:
- 错误地安装的.jar到本地仓库停止詹金斯
- 防止建设项目时使用依赖于该库的本地存储库
它的安装目标是发布到本地仓库......所以我不回答了第一个问题。
第二个问题可以通过隔离每个版本来解决。 其配置为使用自己的本地资源库,使得在一个错误不影响他人:
mvn -s settings.xml compile package
在设置文件中声明的构建工作的本地仓库唯一路径
<settings>
<localRepository>/data/job1/repository</localRepository>
..
而且它的probabily一个好主意,定期清除本地存储库,迫使清理构建。
有一个在詹金斯作业配置使用私有仓库的设置。 这样就可以避免从詹金斯文物共建找到自己的方式到主存储库。 你需要打开扩展选项Maven构建看到的选项。
我不知道是否有实际使用(共享)本地资源库,但关闭写入它的一个选项(即部署文物只有到远程存储库)。 这是为了减少并发更新的数量(但仍保持清醒的磁盘使用情况:)
您可以防止重复文物被部署的Nexus。 每个工件应该有附加,以避免混淆内部版本号。 避免快照版本,因为它们会导致头痛。