[英]Maven central jar with “outgoing” dependency
我們使用的dumbster:dumbster:1.6(來自Maven Central)聲明了對javax.mail:mail:1.3.2的依賴。 不幸的是,Maven Central僅從版本1.4開始包含javax.mail:mail的jar。 如果我對dumbster:dumbster:1.6和javax.mail:mail:1.4.1都添加了依賴項,那么一切都會正常進行。
但是,我想避免告訴所有開發人員,dumbster不能暫時運行,而需要一個額外的mail.jar。 有什么辦法可以避免這種情況?
我覺得這個問題更普遍:來自Maven Central的Jars指向Maven Central之外的地方可能會引起問題。
首先,這個笨拙的部門有些舊,是的,您是對的..這是一個問題,或者更好的是一個問題。 很久以前,中環的規則已更改,因此您不能將pom(罐)放入不屬於中環的參考jar / deps。
通常的解決方案是在公司pom文件中定義這樣的依賴關系,該文件會在dependencyManagement中聲明它,並排除傳遞性依賴關系並添加一個新版本。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dumbster</groupId>
<artifactId>dumbster</artifactId>
<version>1.6</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
</dependencyManagement>
通過使用上述內容,開發人員將不得不通過添加以下內容來輕松定義javax.mail
。 如果他們忘記添加javax.mail
那么構建將失敗。
<dependencies>
<dependency>
<groupId>dumbster</groupId>
<artifactId>dumbster</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
</dependencies>
您還可以通過使用maven-enforcer-plugin強制使用正確的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.