查找 Maven 依赖项的顺序是什么?
What is the order of lookup Maven dependencies?
我需要添加一个 jar 说 abc.jar
(在 Maven 中央仓库中可用)。但这是用 Java 8 编译的。我正在使用 java 7,所以我得到 主要次要版本错误。
由于项目是开源的并且在 GitHub 上可用。我在 pom.xml
的 Maven 编译器插件中更改 java 版本后在本地构建它。它对我有用。
现在我将这个 jar 上传到本地 Nexus 存储库。
这里的查找顺序是什么。由于具有相同名称的 jar 在 Maven 中央仓库中可用。在构建我的项目时,这个 jar 是从本地 nexus 还是从 Maven 中央仓库中挑选出来的?
您的本地缓存(~/.m2/repository
)具有最高优先级,然后由您的 pom.xml
或 ~/.m2/settings.xml
中声明的存储库的顺序决定。 maven central 被隐式添加为最后一个 (afaik)。
因此,如果您将本地 Nexus 存储库添加到该 pom 声明中,应该没问题。
您也可以按照 here 所述自行覆盖中央存储库,但我不建议这样做。
您不应该使用相同的版本号重新部署它。 Maven 中工件的非快照发布不应该被覆盖。即使您所做的只是更改编译源代码的版本,您实际上是在创建一个新的工件。
不过,您确实可以选择支持您正在做的事情。你可以
- 使用特定于您的工件的不同组 and/or 工件 ID 进行部署。
- 使用相同的 artifact/group/version 进行部署,但使用分类器(例如 java8)。使用分类器允许在同一名称空间部署其他工件。
这两个选项中的任何一个都可以让您不必担心查找顺序,这不是您可以完全控制的事情。
我需要添加一个 jar 说 abc.jar
(在 Maven 中央仓库中可用)。但这是用 Java 8 编译的。我正在使用 java 7,所以我得到 主要次要版本错误。
由于项目是开源的并且在 GitHub 上可用。我在 pom.xml
的 Maven 编译器插件中更改 java 版本后在本地构建它。它对我有用。
现在我将这个 jar 上传到本地 Nexus 存储库。
这里的查找顺序是什么。由于具有相同名称的 jar 在 Maven 中央仓库中可用。在构建我的项目时,这个 jar 是从本地 nexus 还是从 Maven 中央仓库中挑选出来的?
您的本地缓存(~/.m2/repository
)具有最高优先级,然后由您的 pom.xml
或 ~/.m2/settings.xml
中声明的存储库的顺序决定。 maven central 被隐式添加为最后一个 (afaik)。
因此,如果您将本地 Nexus 存储库添加到该 pom 声明中,应该没问题。
您也可以按照 here 所述自行覆盖中央存储库,但我不建议这样做。
您不应该使用相同的版本号重新部署它。 Maven 中工件的非快照发布不应该被覆盖。即使您所做的只是更改编译源代码的版本,您实际上是在创建一个新的工件。
不过,您确实可以选择支持您正在做的事情。你可以
- 使用特定于您的工件的不同组 and/or 工件 ID 进行部署。
- 使用相同的 artifact/group/version 进行部署,但使用分类器(例如 java8)。使用分类器允许在同一名称空间部署其他工件。
这两个选项中的任何一个都可以让您不必担心查找顺序,这不是您可以完全控制的事情。