你們都知道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行代碼,都不以爲累了~!看這裏!看這裏!看哪裏! 想依賴那裏就依那裏!媽媽不再用擔憂個人學習了!