maven jar包依賴關係查看、包衝突解決

在idea中 用maven dependency:tree 運行項目 獲得java

[INFO] shiro.demo:shiro.demo:war:0.0.2-SNAPSHOT
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- javax.servlet:jstl:jar:1.2:compile
...
...
...
[INFO] |  +- com.mortennobel:java-image-scaling:jar:0.8.6:compile
[INFO] |  |  \- com.jhlabs:filters:jar:2.0.235:compile
[INFO] |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] |  \- org.apache.shiro:shiro-all:jar:1.2.4:compile
[INFO] |     \- org.apache.shiro:shiro-guice:jar:1.2.4:compile
[INFO] |        +- org.apache.shiro:shiro-core:jar:1.2.4:compile
[INFO] |        +- com.google.inject:guice:jar:3.0:compile
[INFO] |        |  \- javax.inject:javax.inject:jar:1:compile
[INFO] |        \- com.google.inject.extensions:guice-multibindings:jar:3.0:compile
[INFO] +- org.opensymphony.quartz:quartz:jar:1.6.1:compile
[INFO] +- redis.clients:jedis:jar:2.8.0:compile
[INFO] |  \- org.apache.commons:commons-pool2:jar:2.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.7.4:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.7.4:compile
[INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.7.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.952 s
[INFO] Finished at: 2017-09-02T20:46:05+08:00
[INFO] Final Memory: 15M/116M

能夠看到依賴關係。 以前我把shiro相關的dependency都註釋掉 項目依然能夠運行,原來shiro-freemarker-tags:jar中依賴了shiro相關的包,這樣一看就清晰了。redis

怎麼查找全部的重複包呢? 首先須要添加以下插件maven-enforcer-plugin, rules 爲DependencyConvergencespring

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-enforcer-plugin</artifactId>
   <version>1.4.1</version>
   <executions>
      <execution>
         <id>default-cli</id>
         <configuration>
            <rules>
               <DependencyConvergence/>
            </rules>
         </configuration>
         <goals>
            <goal>enforce</goal>
         </goals>
      </execution>
   </executions>
</plugin>

而後執行 mvn enforcer:enforce 看到茫茫多的包重複apache

...
[WARNING] 
Dependency convergence error for org.springframework:spring-jdbc:4.2.5.RELEASE paths to dependency are:
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.springframework:spring-jdbc:4.2.5.RELEASE
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.mybatis:mybatis-spring:1.1.1
    +-org.springframework:spring-jdbc:3.1.1.RELEASE

[WARNING] 
Dependency convergence error for commons-codec:commons-codec:1.6 paths to dependency are:
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-org.apache.httpcomponents:httpclient-cache:4.2.5
    +-org.apache.httpcomponents:httpclient:4.2.5
      +-commons-codec:commons-codec:1.6
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-commons-codec:commons-codec:1.10
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-commons-httpclient:commons-httpclient:3.1
    +-commons-codec:commons-codec:1.2
and
+-shiro.demo:shiro.demo:0.0.2-SNAPSHOT
  +-net.mingsoft:shiro-freemarker-tags:0.1
    +-commons-codec:commons-codec:1.10
...

有時候包會發生衝突怎麼解決衝突呢? 在引入不想要的包的根加上exclusionapi

<dependency>
	<groupId>net.mingsoft</groupId>
	<artifactId>shiro-freemarker-tags</artifactId>
	<version>0.1</version>
	<exclusions>
		<exclusion>
			<artifactId>shiro-all</artifactId>
			<groupId>org.apache.shiro</groupId>
		</exclusion>
	</exclusions>
</dependency>
相關文章
相關標籤/搜索