查找Maven依赖项的顺序是什么?

时间:2016-11-18 01:59:15

标签: maven nexus

我需要添加一个jar abc.jar (在maven central repo中可用)。但这是使用Java 8编译的。我使用的是java 7,因此我收到主要次要版本错误

由于项目是开源的,可以在GitHub上获得。我在pom.xml中的maven编译器插件中更改java版本之后在本地构建它。它对我有用。

现在我将此jar上传到本地Nexus存储库。

这里的查找顺序是什么。由于具有相同名称的jar可在maven central repo中使用。在构建我的项目时,这个罐子是从当地的nexus或maven central repo中挑选出来的吗?

2 个答案:

答案 0 :(得分:2)

您的本地缓存(~/.m2/repository)具有最高优先级,然后达到您在pom.xml~/.m2/settings.xml中声明的存储库的顺序。 maven central被隐含地添加为最后一个(afaik)。

因此,如果您将本地Nexus回购添加到该pom声明中,那么您应该没问题。

您也可以按照here描述自己覆盖中央存储库,但我不建议这样做。

答案 1 :(得分:2)

您不应使用相同的版本号重新部署它。永远不应该覆盖Maven中非工件的非快照版本。即使您所做的只是更改编译源代码的版本,您实际上也在创建一个新工件。

但您可以选择支持您正在做的事情。你可以

  • 使用特定于工件的不同组和/或工件ID进行部署。
  • 使用相同的工件/组/版本进行部署,但使用分类器(java8,作为示例)。使用分类器允许在同一名称空间中部署其他工件。

这些选项中的任何一个都可以防止您不必担心查找顺序,这不是您可以完全控制的内容。