Maven存储库顺序

我有一个存储在repo.maven.apache.org中的fork工件,它有相同的组,工件ID和版本。 我的fork存储在my.repo.hostname中。

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

分叉原始工件时,应使用分类器进行区分。

所以,如果原始工件是:

 com.sample library 1.0  

你可以把你的叉子作为:

  com.sample library 1.0 myfork  

这种方法的优点:

  • 您可以使用原始Maven坐标保持可追溯性,因此可以清楚地显示叉子的制作位置
  • 您明确表示它是该特定工件的特定版本的不同版本(或分支)
  • 如果其他人正在查看您的POM,并且尝试在另一台机器中构建它而无法访问您的存储库(提供分支)然后具有不同的行为甚至错误,您不会产生混淆,因为使用原始的:可维护性是一个很大的收获。
  • 您使用Maven标准(见下文)

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

  • 如果您在公司工作,请将公司名称添加到分类器中,因此如果合同/外部需要使用它,很明显它是由相关公司制造的分支机构
  • 如果它是补丁或附加function(或特定的操作系统或Java版本),请尝试清楚
  • 使用你的常识,就像它是一个标签,你以后会用它来搜索

在这种情况下使用分类器,它也是Maven推荐的方法,来自官方文档 :

分类器允许区分从相同POM构建但其内容不同的工件。 它是一些可选的任意字符串 – 如果存在 – 将附加到版本号之后的工件名称。

因此,不会出现存储库订单或任何其他类型的问题,您的构建将获得清晰度,可重复性和可维护性。 希望它可能有所帮助。