在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>