mvn dependency:analyze命令可以分析当前项目的依赖,我们可以根据这个结果删除多余的依赖。
显示结果如需:
[INFO] --- maven-dependency-plugin:2.1:analyze (default-cli) @ VASETL ---
[WARNING] Used undeclared dependencies found:
[WARNING] org.apache.ant:ant:jar:1.9.1:compile
[WARNING] org.codehaus.jackson:jackson-core-asl:jar:1.8.8:compile
[WARNING] commons-collections:commons-collections:jar:3.2.1:compile
[WARNING] org.codehaus.jackson:jackson-mapper-asl:jar:1.8.8:compile
[WARNING] org.mortbay.jetty:jetty-util:jar:6.1.26:compile
[WARNING] log4j:log4j:jar:1.2.17:compile
[WARNING] commons-logging:commons-logging:jar:1.1.3:compile
[WARNING] Unused declared dependencies found:
[WARNING] com.ailk.cloudetl:CloudETL.Server:jar:V03B01C00-SNAPSHOT:compile
[WARNING] com.ailk.cloudetl:CloudETL.Apps:jar:V03B01C00-SNAPSHOT:compile
[WARNING] org.mortbay.jetty:jetty-util5:jar:6.1.26:compile
[WARNING] org.mortbay.jetty:jetty:jar:6.1.26:compile
[WARNING] org.springframework:spring-orm:jar:3.0.3.RELEASE:compile
[WARNING] org.springframework:spring-context-support:jar:3.0.3.RELEASE:compile
[WARNING] org.springframework:spring-expression:jar:3.0.3.RELEASE:compile
[WARNING] org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.3.0-cdh5.0.0:compile
[WARNING] org.apache.hadoop:hadoop-auth:jar:2.3.0-cdh5.0.0:compile
[WARNING] org.apache.hadoop:hadoop-client:jar:2.3.0-cdh5.0.0:compile
[WARNING] org.apache.hadoop:hadoop-annotations:jar:2.3.0-cdh5.0.0:compile
[WARNING] org.quartz-scheduler:quartz:jar:1.8.4:compile
[WARNING] org.apache.commons:commons-jexl:jar:2.0.1:compile
[WARNING] dom4j:dom4j:jar:1.6.1:compile
[WARNING] org.hibernate:hibernate-c3p0:jar:3.3.2.GA:compile
[WARNING] org.hibernate:hibernate-annotations:jar:3.4.0.GA:compile
[WARNING] org.javassist:javassist:jar:3.13.0-GA:compile
[WARNING] org.eclipse.jdt:core:jar:3.1.1:compile
[WARNING] org.python:jython:jar:2.5.0:compile
[WARNING] org.apache.hive:hive-jdbc:jar:0.12.0-cdh5.0.0:compile
[WARNING] org.apache.hive:hive-metastore:jar:0.12.0-cdh5.0.0:compile
[WARNING] mazz.i18nlog:i18nlog:jar:1.0.10:compile
[WARNING] org.codehaus.groovy:groovy:jar:1.7.4:compile
[WARNING] mysql:mysql-connector-java:jar:5.1.13:compile
[WARNING] com.oracle:ojdbc14:jar:10.2.0.4.0:compile
[WARNING] db2:db2java:jar:1.0:compile
[WARNING] com.ailk.cloudetl:JAC:jar:0.0.1:compile
[WARNING] jaxen:jaxen:jar:1.1.6:compile
[WARNING] javax.servlet:servlet-api:jar:2.5:provided
[WARNING] ant:ant:jar:1.6.5:compile
如下结果就可以看出,我们项目有很多没有使用的依赖。
问题分析:
所有的依赖都是在父模块的pom中定义的,并不是所以的子模块都需要这些依赖,所以导致了无用依赖过多。
解决办法:
使用dependencyManagement管理,这样如果父目录声明了,但子目录不需要,就不会被引入,子模块声明是可以只声明依赖的groupId和artifactId,不需要声明版本和scope等信息。