java - Team 的集中式本地 Maven 存储库
问题描述
我们的开发团队使用 Maven 构建软件。我们的计算机上有 Maven 本地存储库。问题是有时由两个不同的开发人员构建的版本不同,因为构建的包包含不同版本的包含依赖项。
当 POM.xml 文件中没有针对依赖项提及版本标记时,就会发生这种情况。例如:
<dependency>
<groupId>mylib-group</groupId>
<artifactId>mylib-artifact</artifactId>
</dependency>
在这种情况下,Maven 会在本地安装最新的库。
为了避免这个问题,我们在一台计算机上安装了 Maven(我们称为构建服务器),我们团队的所有成员都在那台计算机上构建。
这种情况有更好的解决方案吗?
我怎样才能有集中的 Maven 本地?
解决方案
首先:如果你有一个依赖
<dependency>
<groupId>mylib-group</groupId>
<artifactId>mylib-artifact</artifactId>
</dependency>
Maven不会采用最新版本,而是采用该<dependencyManagement>
部分中定义的版本。因此,您在每台计算机上都得到相同的结果(除非您有可能不同的 SNAPSHOT 版本)。
话虽如此:拥有构建服务器通常是为构建提供稳定环境的好主意。
附录:您不能共享 Maven 本地存储库。这个存储库不是线程安全的,并且在同一个本地存储库上同时运行两个构建可能会产生奇怪的效果(我根据经验说话)。
推荐阅读
- python - python平滑移动光标位置
- lighttpd - Lighttpd mod_accesslog 管道进程
- git - Git is not accessible as a source provider from VSCode
- python - 弹性搜索:索引具有空值的日期字段
- java - 没有xml配置的Spring不扫描包
- amazon-web-services - 如何为特定区域配置和启动 AWS automator 模板?
- reactjs - 更新反应实例后开玩笑快照为空
- javascript - 安卓。将 Edittext 文本存储/保存为 .html 文件到内部存储
- c# - 使用 HttpWebRequest 的 ADFS 身份验证
- apache-kafka - Kafka - 根据预定时间将消息移动到队列前面