在兩個不同的 Maven 專案中,我們包含相同的依賴項:hibernate-validator 7.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]
專案乙:
[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]
到現在為止,我認為依賴項的依賴項總是相同的,因為版本是相同的,但是這個結果讓我懷疑。
這與專案中的其他依賴項有關嗎?這可能是專案使用不同存盤庫的結果嗎?
uj5u.com熱心網友回復:
可以在MvnRespository上找到 org.hibernate.validator:hibernate-validator:jar:7.0.1.Final 的依賴項。此工件的編譯依賴項部分顯示它使用 jakarta.validation:jakarta.validation-api:jar:3.0.0 和 org.jboss.logging:jboss-logging:jar:3.4.1(等等)。
這意味著在專案 A 中,某些東西實際上覆寫了這些傳遞依賴項。您可以查看以下鏈接以獲取更多資訊。基本上它看起來像專案 A pom(或該專案的父 pom)宣告了對 jakarta.validation-api 和 jboss-logging 的依賴關系,然后 Maven 在搜索“最近的定義”依賴關系時會選擇它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/398193.html
