Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 团队的集中式本地Maven存储库_Java_Maven_Repository_Maven 3_Local - Fatal编程技术网

Java 团队的集中式本地Maven存储库

Java 团队的集中式本地Maven存储库,java,maven,repository,maven-3,local,Java,Maven,Repository,Maven 3,Local,我们的开发团队使用Maven构建软件。我们的计算机上有Maven本地存储库。问题是,有时由两个不同的开发人员生成的构建是不同的,因为生成的包包含不同版本的包含依赖项 当POM.xml文件中没有提到依赖项的版本标记时,就会发生这种情况。例如: <dependency> <groupId>mylib-group</groupId> <artifactId>mylib-artifact</artifa

我们的开发团队使用Maven构建软件。我们的计算机上有Maven本地存储库。问题是,有时由两个不同的开发人员生成的构建是不同的,因为生成的包包含不同版本的包含依赖项

当POM.xml文件中没有提到依赖项的版本标记时,就会发生这种情况。例如:

<dependency>
            <groupId>mylib-group</groupId>
            <artifactId>mylib-artifact</artifactId>
</dependency>

mylib群
mylib伪影
在本例中,Maven在本地安装了最新的库

为了避免这个问题,我们在一台计算机上安装了Maven(我们称之为构建服务器),我们团队的所有成员都在这台计算机上进行构建

这个案子有没有更好的解决办法


我怎样才能拥有集中化的Maven local?

首先:如果您有像

<dependency>
    <groupId>mylib-group</groupId>
    <artifactId>mylib-artifact</artifactId>
</dependency>

mylib群
mylib伪影
Maven不会采用最新版本,而是在
部分中定义的版本。因此,在每台计算机上都会得到相同的结果(除非您有可能不同的快照版本)

话虽如此:拥有一个构建服务器通常是拥有一个稳定的构建环境的好主意


附录:您不能共享Maven本地存储库。此存储库不是线程安全的,在同一本地存储库上同时运行两个构建可能会产生奇怪的效果(我是根据经验说的)。

更好的解决方案是使用组织级工件存储库,如Nexus或Artifactory,并让所有开发人员发布到该存储库。更好的是,所有必须可靠的工件版本都应该构建在CI服务器上,这样每个开发人员都可以从他们自己的分支使用构建进行测试,并在本地安装。绝对要与@ernest_k保持一致,还应该显式声明依赖项的版本。如果您需要一个更新的本地开发版本,只需更改它,一旦完成,将更改后的版本提交给远程VCS。