【问题标题】:Maven dependency org.hibernate.validator 7.0.1.Final with differing dependencies in projectsMaven 依赖项 org.hibernate.validator 7.0.1.Final 在项目中具有不同的依赖项
【发布时间】:2021-12-29 09:13:47
【问题描述】:

在两个不同的 maven 项目中,我们包含相同的依赖项:hibernate-validator7.0.1.Final,如下所示:

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>7.0.1.Final</version>
        </dependency>

运行 mvn dependency:list 会得到以下结果。

项目 A:

[INFO] +- org.hibernate.validator:hibernate-validator:jar:7.0.1.Final:compile
[INFO] |  +- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.4.2.Final:compile
[INFO] |  \- com.fasterxml:classmate:jar:1.5.1:compile

为这个项目运行 mvn dependency:list-repositories 给出:

[INFO] Repositories used by this build:
[INFO]        id: sonatype-nexus-snapshots
      url: https://oss.sonatype.org/content/repositories/snapshots
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => false, update => daily]

[INFO]        id: spy
      url: http://files.couchbase.com/maven2/
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => daily]

[INFO]        id: apache.snapshots
      url: http://repository.apache.org/snapshots
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => false, update => daily]

[INFO]        id: apache.snapshots
      url: https://repository.apache.org/snapshots
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => false, update => daily]

[INFO]        id: shibboleth-repo
      url: https://build.shibboleth.net/nexus/content/repositories/releases/
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => true, update => daily]

[INFO]        id: central
      url: https://repo.maven.apache.org/maven2
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => daily]

项目 B:

[INFO] +- org.hibernate.validator:hibernate-validator:jar:7.0.1.Final:compile
[INFO] |  +- jakarta.validation:jakarta.validation-api:jar:3.0.0:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
[INFO] |  \- com.fasterxml:classmate:jar:1.5.1:compile

为这个项目运行 mvn dependency:list-repositories 给出:

[INFO] Repositories Used by this build:
[INFO]       id: central
      url: https://repo.maven.apache.org/maven2
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => daily]

[INFO]       id: project.local
      url: file:C:\*****\*****/repo
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => true, update => daily]

[INFO]       id: apache.snapshots
      url: https://repository.apache.org/snapshots
   layout: default
snapshots: [enabled => true, update => daily]
 releases: [enabled => false, update => daily]

到目前为止,我认为依赖项的依赖项总是相同的,因为版本是相同的,但这个结果让我怀疑。

这与项目中的其他依赖项有关吗? 这可能是项目使用不同存储库的结果吗?

【问题讨论】:

  • 首先我们需要拥有两个项目的完整 pom 文件,因为罪魁祸首在那里......要么项目使用不同的版本显式或具有使用不同版本的依赖项......

标签: maven hibernate-validator


【解决方案1】:

org.hibernate.validator:hibernate-validator:jar:7.0.1.Final 的依赖关系可以在MvnRespository 上找到。该工件的编译依赖项部分显示使用了 jakarta.validation:jakarta.validation-api:jar:3.0.0 和 org.jboss.logging:jboss-logging:jar:3.4.1(等等)。

这意味着在项目 A 中,某些东西实际上覆盖了那些传递依赖。您可以查看以下link 以了解更多信息。基本上它看起来像项目 A pom(或该项目的父 pom)声明了对 jakarta.validation-api 和 jboss-logging 的依赖关系,然后 Maven 在搜索“最近定义”依赖关系时会选择它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2013-11-17
    • 2018-10-20
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多