如何在Jenkins中将写入权限分开到Maven仓库?

为了防止一个构建影响另一个构建,可以将Jenkins项目配置为使用自己的专用Maven存储库。 但是,因为我们实际上有一大堆依赖关系,这会导致大量浪费的磁盘空间并降低构建速度。 我们使用Maven仓库代理,但仍然需要通过本地网络下载工件。

我可以直接在Jenkins机器上建立另一个存储库代理。 有更简单的解决方案吗?

我仍然希望任何“maven install”转到特定于项目的回购,而读取尚未部署到该项目特定回购的工件应该来自本地文件系统的中心位置。 出于性能和磁盘空间的原因, 应该复制那些工件。

为了解释背景,我添加了“使用私有Maven存储库”选项的帮助文本:

“通常,Jenkins使用Maven确定的本地Maven存储库 - 确切的过程似乎没有记录,但是它是〜/ .m2 / repository,可以在〜/ .m2 / settings.xml中重写(参见参考资料以获取更多信息细节。)

这通常意味着在同一节点上执行的所有作业共享一个Maven存储库。 这样做的好处是可以节省磁盘空间,但其缺点是有时这些构建可能会互相干扰。 例如,尽管POM中没有任何存储库可能拥有这些存储库,但最终可能会因为您拥有本地存储库中的所有依赖项而最终导致构建不成功。

还有一些关于并发Maven进程尝试使用同一本地存储库的报告问题。

当选中这个选项时,Jenkins会告诉Maven使用$ WORKSPACE / .repository作为本地Maven仓库。 这意味着每个工作都会为自己获得自己的独立Maven仓库。 它修复了上述问题,但是增加了磁盘空间消耗。

使用此选项时,请考虑设置Maven工件管理器,以便您不必经常打击远程Maven资源库。

如果您希望在Jenkins上执行的所有Maven作业中激活此模式,请参阅此处描述的技术。“


你可以有:

  • 一个指向常用本地存储库的settings.xml,用于每个mvn clean package命令
  • 以及每个projet的一个settings.xml,它为每个mvn install命令使用特定的本地存储库
  • 为了您会:

    mvn clean package -s settings-common.xml # using common-repo
    mvn install -s settings-jobX.xml # using jobX-repo
    

    唯一的问题是,如果他们需要它,那么由您的工作安装的工件将无法用于其他工作。 您必须部署或手动将工件复制到common-repo。

    请注意,我不完全理解“一个构建影响另一个”的含义。 你应该澄清,为了有一个更好的答案(因为你想做什么可能不是最好的)。

    链接地址: http://www.djcxy.com/p/66393.html

    上一篇: How to separate write access to Maven repositories in Jenkins?

    下一篇: How do I write to the Android emulator using Jenkins