Maven依賴排除 禁止依賴傳遞 取消依賴的方法 去除jar包中的不想要的依賴關系


大家都知道Maven的優點是依賴管理,特別是前期使用ANT的開發者都有很多感觸。最近要開發一個java工程,定的要使用maven,會使用hadoop和hbase的客戶端,而引入一個hadoop-client的jar或者hbase的jar包,會依賴十幾個其他的jar包,而這些jar包的功能我又用不上,所以這種依賴反倒成了工程瘦身的負擔。關鍵我還有強迫症,見到這些對工程無用的包,我就抓狂。所以在網上百找千尋,找到了幾個方法:

1. 項目間傳遞

    如果我的當前項目是project1,project1要依賴project2,project1依賴project2的配置中加上<optional>true</optional>,表示依賴可選,

Java代碼  
  1. <dependency>  
  2.     <groupId>com.projecct</groupId>  
  3.     <artifactId>project2</artifactId>  
  4.     <version>1.0</version>  
  5.     <scope>compile</scope>  
  6.     <optional>true</optional>  
  7. </dependency>  

 那么以后所有聲明依賴project1的項目如果也依賴project2,就必須寫手動聲明。比如project3依賴project1和project2,如果project3只聲明了對project1的依賴,那么project2不會自動加入依賴,需要重新聲明對project2的依賴。

 

這種方式排除不了我項目中對第三方jar包所依賴的其他依賴,因為我不可能去修改第三方jar包的pom文件,所以只適合在項目組內部使用。

2. 依賴過濾

(1)單依賴過濾

       同依賴過濾直接處理:可以過濾一個或者多個,如果過濾多個要寫多個<exclusion>。這個也解決不了我的問題,或者說解決太麻煩,我那里知道hbase要依賴那些包,記不住。

Java代碼  
  1. <dependency>      
  2.      <groupId>org.apache.hbase</groupId>  
  3.      <artifactId>hbase</artifactId>  
  4.      <version>0.94.17</version>   
  5.      <exclusions>    
  6.            <exclusion>        
  7.                 <groupId>commons-logging</groupId>            
  8.                 <artifactId>commons-logging</artifactId>    
  9.            </exclusion>    
  10.      </exclusions>    
  11. </dependency>   

 

(2)多依賴過濾

     把所以依賴都過濾了。手起刀落~啊,世界都安靜了。

Java代碼  
  1. <dependency>  
  2.     <groupId>org.apache.hbase</groupId>  
  3.     <artifactId>hbase</artifactId>  
  4.     <version>0.94.17</version>  
  5.     <exclusions>  
  6.         <exclusion>  
  7.             <groupId>*</groupId>  
  8.             <artifactId>*</artifactId>  
  9.         </exclusion>  
  10.     </exclusions>  
  11. </dependency>  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM