gpt4 book ai didi

java - 新的 Maven 依赖版本拉取 pom,而不是将 jar 放入私有(private) nexus 存储库中?

转载 作者:行者123 更新时间:2023-11-29 03:00:44 25 4
gpt4 key购买 nike

我正在升级我在 java/maven/spring 应用程序中的一些依赖版本,它使用我们的 nexus repo 作为镜像 maven central 的中央存储库。

我尝试将 hibernate 升级到所列的最新版本 3.5.4-Final:

Hibernate newest release stable version

当我运行 maven install 时,我在我的 Nexus 服务器中看到现在列出了 3.5.4-Final,但是在它的目录中只有一个项目的 pom.xml 文件,没有一个是关联的 JAR。

当我检查 POM 时,我可以看到它的包装被列为 POM 而不是 JAR。

这是为什么呢,如何让maven获取库的jar包版本而不仅仅是POM?

编辑 - 已发布 mvn 安装错误消息:

[ERROR] Failed to execute goal on project app: Could not resolve dependencies for project com.app:app:war:16.2.1-SNAPSHOT: Failure to find org.hibernate:hibernate:jar:3.5.4-Final in http://ssp-nexus1.mynexus-server.com:8081/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of company.nexus.mirror has elapsed or updates are forced -> [Help 1]

最佳答案

link 中所述你提供了

Aggregator of the Hibernate Core modules.

因此,您链接的 Artifact 实际上是一个 pom它聚合(作为多模块)其他 Hibernate 人工制品。

相反,可以找到 hibernate-core Artifact ,例如 here ,作为标准的 Maven 依赖项(即 jar)。

默认依赖项有type jar,因此如果您为依赖项添加 maven 坐标 (GAV) 而不是 pom 类型,则 maven 将查找它作为 jar。这就是为什么您会收到编辑中提到的错误的原因。

你应该从你的 pom 中删除它的依赖,只添加你实际需要的 hibernate 依赖。根据经验,添加您在代码(例如导入语句)或配置文件中明确使用的依赖项,然后让 maven 处理所需的传递依赖项,前提是它们将在您的公司存储库中可用, 显然。

更新
根据您最新的评论和反馈,这里进一步解释了为什么仅仅更改现有 Hibernate 依赖项的版本就会遇到这个问题:

  • 新的 3.5.4-Final 和之前的 3.2.7.ga 版本共享相同的 groupIdartifactId 在 Maven 存储库上
  • 但是,前者的类型是pom(它是一个pom文件),而后者的类型是jar(默认的)
  • 因此,之前存在的版本工作正常,并且更改了您将其从 jar 切换到 pom 的依赖项版本,破坏了 maven 解析(正在寻找一个版本的 jar 而不是 pom)
  • 这主要是因为您从 ga 切换到 FINAL 版本。有关这些版本之间差异的进一步说明,您可以查看this SO question。和 this one

作为旁注,我发现更改版本号也会更改依赖类型有点不一致,这可能是一个争论点,但如果我是 Hibernate 团队,我会以不同的方式处理此版本管理。

关于java - 新的 Maven 依赖版本拉取 pom,而不是将 jar 放入私有(private) nexus 存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163237/

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