我们的开发团队使用 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 本地存储库。这个存储库不是线程安全的,在同一个本地存储库上同时运行两个构建可能会产生奇怪的效果(我是根据经验说的)。
关于java - Team 的集中式本地 Maven 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514117/