gpt4 book ai didi

java - Maven 仓库顺序

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:09 25 4
gpt4 key购买 nike

我有一个存储在 repo.maven.apache.org 中的分支 Artifact ,它具有相同的组、 Artifact ID 和版本。我的 fork 存储在 my.repo.hostname 中。

我如何强制 Maven 使用我的存储库中的 Artifact ,而不是来自 Maven Central 的 Artifact ?

最佳答案

当 fork 一个原始 Artifact 时,你应该使用 classifiers进行区分。

所以,如果原始 Artifact 是:

<dependency>
<groupId>com.sample</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
</dependency>

您可以将您的 fork 作为:

<dependency>
<groupId>com.sample</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<classifier>myfork</classifier>
</dependency>

这种方法的优点:

  • 您使用原始 Maven 坐标保持可追溯性,因此可以清楚地知道 fork 的位置
  • 您明确表示它是该特定 Artifact 的特定版本的不同版本(或分支)
  • 如果其他人正在查看您的 POM 并尝试在无法访问您的存储库(提供分支)的另一台机器上构建它,然后由于使用原文:可维护性是一个很大的收获。
  • 您使用 Maven 标准(见下文)

对于分类器名称(它是一个自由字符串),我经常发现提供额外信息很有用:

  • 如果您在一家公司工作,请将公司名称添加到分类器中,这样如果契约(Contract)/外部人员需要使用它,就会立即清楚它是由相关公司制作的 fork
  • 如果是补丁或附加功能(或针对特定操作系统或 Java 版本),也请尽量说明清楚
  • 使用您的常识,比如如果它是一个标签,您稍后会用它来进行搜索

在这种情况下使用分类器也是 Maven 推荐的方法,来自 official documentation :

The classifier allows to distinguish artifacts that were built from the same POM but differ in their content. It is some optional and arbitrary string that - if present - is appended to the artifact name just after the version number.

因此,不会出现存储库顺序或任何其他类型的问题,您的构建将变得清晰、可重现和可维护。希望对您有所帮助。

关于java - Maven 仓库顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com