簡體   English   中英

Maven中央jar具有“傳出”依賴

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM