我们的开发团队使用Maven构建软件。我们的计算机上有Maven本地存储库。问题在于,有时由两个不同的开发人员构建的构建会有所不同,因为构建的包包含不同版本的包含依赖项。
在POM.xml文件中未提及依赖项的版本标记时会发生这种情况。例如:
<dependency>
<groupId>mylib-group</groupId>
<artifactId>mylib-artifact</artifactId>
</dependency>
在这种情况下,Maven获得了本地安装的最新库。
为了避免这个问题我们在一台计算机上安装了Maven(我们称之为Build服务器),我们团队的所有成员都在该计算机上构建。
对于这种情况有没有更好的解决方案?
我如何在本地集中Maven?
首先:如果你有一个像依赖的依赖
<dependency>
<groupId>mylib-group</groupId>
<artifactId>mylib-artifact</artifactId>
</dependency>
Maven不会采用最新版本,而是在<dependencyManagement>
部分定义的版本。因此,您可以在每台计算机上获得相同的结果(除非您有可能不同的SNAPSHOT版本)。
话虽如此:拥有一个构建服务器通常是一个良好的想法,为构建提供稳定的环境。
附录:您无法共享Maven本地存储库。此存储库不是线程安全的,并且在同一本地存储库上同时运行两个构建可能会产生奇怪的影响(我从经验中说)。