【问题标题】:Centralized local Maven repository for TeamTeam 的集中式本地 Maven 存储库
【发布时间】:2019-04-04 10:53:11
【问题描述】:

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

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

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

在这种情况下,Maven 会在本地安装最新的库。

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

这种情况有没有更好的解决方案?

我怎样才能有集中的 Maven 本地?

【问题讨论】:

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

标签: java maven repository maven-3 local


【解决方案1】:

首先:如果你有像

这样的依赖
<dependency>
    <groupId>mylib-group</groupId>
    <artifactId>mylib-artifact</artifactId>
</dependency>

Maven不会采用最新版本,而是采用&lt;dependencyManagement&gt; 部分中定义的版本。因此,您在每台计算机上都会得到相同的结果(除非您有可能不同的 SNAPSHOT 版本)。

话虽如此:拥有构建服务器通常是为构建提供稳定环境的好主意。

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

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 2013-11-23
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2011-12-15
    • 2013-10-11
    相关资源
    最近更新 更多