轉載:Maven依賴排除 禁止依賴傳遞 取消依賴的方法

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

1. 項目間傳遞apache

    若是個人當前項目是project1,project1要依賴project2,project1依賴project2的配置中加上 <optional>true</optional>,表示依賴可選,maven

<dependency>
	<groupId>com.projecct</groupId>
	<artifactId>project2</artifactId>
	<version>1.0</version>
	<scope>compile</scope>
	<optional>true</optional>
</dependency>

 那麼之後全部聲明依賴project1的項目若是也依賴project2,就必須寫手動聲明。好比project3依賴project1和project2,若是project3只聲明瞭對project1的依賴,那麼project2不會自動加入依賴,須要從新聲明對project2的依賴。oop

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

2. 依賴過濾hadoop

(1)單依賴過濾開發

       同依賴過濾直接處理:能夠過濾一個或者多個,若是過濾多個要寫多個<exclusion>。這個也解決不了個人問題,或者說解決太麻煩,我那裏知道hbase要依賴那些包,記不住。io

<dependency>    
	<groupId>org.apache.hbase</groupId>
	<artifactId>hbase</artifactId>
	<version>0.94.17</version> 
	<exclusions>  
		 <exclusion>	 
			 <groupId>commons-logging</groupId>		
			 <artifactId>commons-logging</artifactId>  
		 </exclusion>  
	</exclusions>  
</dependency>

(2)多依賴過濾cli

     把因此依賴都過濾了。手起刀落~啊,世界都安靜了。配置

<dependency>
	<groupId>org.apache.hbase</groupId>
	<artifactId>hbase</artifactId>
	<version>0.94.17</version>
	<exclusions>
		<exclusion>
			<groupId>*</groupId>
			<artifactId>*</artifactId>
		</exclusion>
	</exclusions>
</dependency>

自從搞定了這個依賴過濾啊,我腰不酸,腿不疼了,手不抖了,一口氣啊,5000行代碼,都不以爲累了~!看這裏!看這裏!看哪裏! 想依賴那裏就依那裏!媽媽不再用擔憂個人學習了!

相關文章
相關標籤/搜索