maven如何引入依賴的時候去除其中某個jar包?(轉)
阿新 • • 發佈:2018-12-02
轉自:http://www.cnblogs.com/apache-x/p/5674028.html
maven專案,去除jar包中的不想要的依賴關係
解釋:就是說專案中要用到某一個a.jar包,通過maven引入了之後,也自動的匯入了該jar包所依賴的包,這裡就會存在一個問題,如果a.jar包依賴b.jar這個專案的1.0版本,可是我的專案中已經有b.jar這個專案2.0的版本了,這裡就會造成衝突,解決的辦法是去除a.jar包依賴b.jar這個專案的1.0版本的依賴關係,讓專案使用我已有的包。
最近搭一個springmvc4.x的maven環境,由於要用到webserice,打算整合jersey做,在匯入jersey-spring.jar時出現了這樣的問題,我用的是jersey-spring1.81.jar版本,該專案依賴的是spring3,所以把jersey-spring1.81.jar加入maven或就出現了這樣的情況,由於它依賴spring3.x,所以自動匯入了spring3.x的jar,並把我spring4.x的包自動刪除了,導致spring4.x根本無法構建,可是我已經有4.x的包,完全不需要它自動匯入3的包刪除4的包啊
解決版本:
去除jersey-spring1.81.jar原有的依賴,這樣就不會自動去導spring3的包了,而是使用我已有的spring4的包,
同理,以後遇到類似的問題也可以這麼解決,規則是在要匯入的包中加一個去除原有依賴的標籤,標籤內寫想去除的包的id和版本。
貼上解決程式碼:
---------------------------------------------------------------------------
<dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>1.18.1</version> <!-- 去除自帶的spring版本 --> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>