亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Maven:如何覆蓋庫添加的依賴項

Maven:如何覆蓋庫添加的依賴項

收到一只叮咚 2019-11-12 12:48:27
這是我的一般性問題:我的項目P依賴于A,后者依賴于B,后者依賴于C,后者依賴于D的1.0.1版本。D的1.0.1版本存在問題,我想強制使用其他模塊。我不知道如何在我的項目的POM中聲明這一點,因為我沒有直接添加對D的依賴。是C聲明了對D的依賴。重要:在這種情況下,不僅版本會更改,組和工件也將更改。因此,這不僅僅是覆蓋依賴項版本的問題,而是排除一個模塊并包含另一個模塊的問題。在具體情況下,D是StAX,其1.0.1有一個bug。根據錯誤中的注釋,“通過將stax-api-1.0.1(maven GroupId = stax)替換為stax-api-1.0-2(maven GroupId = javax.xml.stream)解決了問題”正在嘗試。因此,D = stax:stax-api:jar:1.0.1和C = org.apache.xmlbeans:xmlbeans:jar:2.3.0我正在使用maven 2.0.9,以防萬一。mvn依賴項輸出:樹“mvn dependency:tree[..snip..][INFO] +- org.apache.poi:poi-ooxml:jar:3.6:compile[INFO] |  +- org.apache.poi:poi-ooxml-schemas:jar:3.6:compile[INFO] |  |  +- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile[INFO] |  |  |  \- stax:stax-api:jar:1.0.1:compile在我的項目的POM中,我對“ A”具有以下依賴性:<dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi</artifactId>    <version>3.6</version></dependency><dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi-ooxml</artifactId>    <version>3.6</version></dependency>提前致謝。
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

只需在當前pom中指定版本即可。此處指定的版本將覆蓋其他版本。


強制版本

如果在當前POM中使用特定版本聲明了版本,則將始終采用該版本-但是,應注意的是,如果該版本本身依賴于使用傳遞依賴項,則這也會影響下游的其他pom。


查看完整回答
反對 回復 2019-11-12
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

或者,您可以僅排除不需要的依賴項。STAX包含在JDK 1.6中,因此,如果您使用1.6,則可以完全排除它。


我下面的示例對您來說有點不對-您只需要兩個排除項之一,但我不確定哪個是排除項。還有其他版本的Stax,在下面的示例中,我導入A,然后導入B,又導入C&D,每個C&D(通過更多傳遞依賴項)都導入了不同版本的Stax。因此,由于我對'A'的依賴性,我排除了Stax的兩個版本。


<dependency>

  <groupId>a.group</groupId>

  <artifactId>a.artifact</artifactId>

  <version>a.version</version>

  <exclusions>

    <!--  STAX comes with Java 1.6 -->

    <exclusion>

      <artifactId>stax-api</artifactId>

      <groupId>javax.xml.stream</groupId>

    </exclusion>

    <exclusion>

      <artifactId>stax-api</artifactId>

      <groupId>stax</groupId>

    </exclusion>

  </exclusions>

<dependency>


查看完整回答
反對 回復 2019-11-12
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

我也無法排除第三方庫中的依賴項。我在排除時使用了scot的方法,但在pom中也將依賴關系添加到了較新的版本中。(我使用了Maven 3.3.3)


因此,對于stAX示例,它看起來像這樣:


<dependency>

  <groupId>a.group</groupId>

  <artifactId>a.artifact</artifactId>

  <version>a.version</version>

  <exclusions>

    <!--  STAX comes with Java 1.6 -->

    <exclusion>

      <artifactId>stax-api</artifactId>

      <groupId>javax.xml.stream</groupId>

    </exclusion>

    <exclusion>

      <artifactId>stax-api</artifactId>

      <groupId>stax</groupId>

    </exclusion>

  </exclusions>

<dependency>


<dependency>

    <groupId>javax.xml.stream</groupId>

    <artifactId>stax-api</artifactId>

    <version>1.0-2</version>

</dependency>


查看完整回答
反對 回復 2019-11-12
  • 3 回答
  • 0 關注
  • 1478 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號