聊聊maven的pom.xml中的exclusions標簽的作用

maven pom.xml的exclusions標簽作用

項目中的例子

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
   <exclusions>
    <exclusion>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
   </exclusions>
  </dependency>

解釋exclusion標簽

這個標簽的作用是排除關聯依賴的引入,因為maven的pom依賴其中有一點是將關聯的依賴全都引入進來 ,

這個標簽在這的作用就是 如果關聯的依賴和引入的其他依賴可能存在沖突,

就必須將關聯的依賴排除掉,所以就用這個標簽。

另外這個+s的,大傢應該也明白 ,就是可以包含多個嗎!!!!

用exclusions來進行排除依賴

  • exclusions

但依賴調節並不解決所有問題,我們還需要exclusions來進行排除依賴。

例如這樣一個情況,工程中引入瞭A,A依賴B,但是B的版本過舊。

此時可以使用exclusions排除該傳遞性依賴,並顯示聲明一個最新版本的B依賴。

比如這樣

<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>4.2.1</version>
    <exclusions>
        <exclusion>
            <artifactId>bcmail-jdk14</artifactId>
            <groupId>bouncycastle</groupId>
        </exclusion>
        <exclusion>
            <artifactId>bcprov-jdk14</artifactId>
            <groupId>bouncycastle</groupId>
        </exclusion>
        <exclusion>
            <artifactId>bctsp-jdk14</artifactId>
            <groupId>bouncycastle</groupId>
        </exclusion>
    </exclusions>
</dependency>

在比如若是使用zookeeper發現有log4j的沖突。

我們也可以使用這種方式進行排除

<dependency>
   <groupId>org.apache.zookeeper</groupId>
   <artifactId>zookeeper</artifactId>
   <version>3.5.4-beta</version>
   <exclusions>
    <exclusion>
     <artifactId>slf4j-log4j12</artifactId>
     <groupId>org.slf4j</groupId>
    </exclusion>
   </exclusions>
  </dependency>

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: