如何解决Java中的重叠依赖?

时间:2016-07-15 08:33:49

标签: java maven log4j

我找到了Maven-shade-plugin, uber-jar and overlapping classes,但它没有完全回答我的问题。如何确定要保留哪个日志库?是否有一种简单的方法可以确定或我必须自己进行性能测试?

我正在使用框架(Dropwizard)和一堆SDK(如aws-java-sdk-ses)。建立一个uberjar会产生以下警告:

[07:47:56][com.mycompany:sandman] [WARNING] jcl-over-slf4j-1.7.21.jar, commons-logging-1.1.3.jar define 6 overlapping classes:
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.impl.SimpleLog$1
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.Log
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.impl.SimpleLog
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.LogConfigurationException
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.impl.NoOpLog
[07:47:56][com.mycompany:sandman] [WARNING]   - org.apache.commons.logging.LogFactory
[07:47:56][com.mycompany:sandman] [WARNING] maven-shade-plugin has detected that some class files are
[07:47:56][com.mycompany:sandman] [WARNING] present in two or more JARs. When this happens, only one
[07:47:56][com.mycompany:sandman] [WARNING] single version of the class is copied to the uber jar.
[07:47:56][com.mycompany:sandman] [WARNING] Usually this is not harmful and you can skip these warnings,
[07:47:56][com.mycompany:sandman] [WARNING] otherwise try to manually exclude artifacts based on
[07:47:56][com.mycompany:sandman] [WARNING] mvn dependency:tree -Ddetail=true and the above output.
[07:47:56][com.mycompany:sandman] [WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/

此处解决冲突或重叠依赖问题的正确方法是什么?如何确定哪个日志库更好?

这是依赖树:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building sandman 0.1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ sandman ---
[INFO] com.benovative:sandman:jar:0.1
[INFO] +- io.dropwizard:dropwizard-core:jar:0.9.3:compile
[INFO] |  +- io.dropwizard:dropwizard-util:jar:0.9.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile
[INFO] |  |  +- com.google.guava:guava:jar:18.0:compile
[INFO] |  |  +- com.google.code.findbugs:jsr305:jar:3.0.1:compile
[INFO] |  |  \- joda-time:joda-time:jar:2.9:compile
[INFO] |  +- io.dropwizard:dropwizard-jackson:jar:0.9.3:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.6.7:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.7:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk7:jar:2.6.7:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-guava:jar:2.6.7:compile
[INFO] |  |  +- com.fasterxml.jackson.module:jackson-module-afterburner:jar:2.6.7:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.6.7:compile
[INFO] |  |  +- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] |  |  \- ch.qos.logback:logback-classic:jar:1.1.3:compile
[INFO] |  +- io.dropwizard:dropwizard-configuration:jar:0.9.3:compile
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.6.7:compile
[INFO] |  |  |  \- org.yaml:snakeyaml:jar:1.15:compile
[INFO] |  |  \- org.apache.commons:commons-lang3:jar:3.4:compile
[INFO] |  +- io.dropwizard:dropwizard-logging:jar:0.9.3:compile
[INFO] |  |  +- io.dropwizard.metrics:metrics-logback:jar:3.1.2:compile
[INFO] |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile
[INFO] |  |  +- ch.qos.logback:logback-core:jar:1.1.3:compile
[INFO] |  |  +- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.2.17.v20160517:compile
[INFO] |  +- io.dropwizard:dropwizard-metrics:jar:0.9.3:compile
[INFO] |  +- io.dropwizard:dropwizard-jersey:jar:0.9.3:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-server:jar:2.22.1:compile
[INFO] |  |  |  +- org.glassfish.jersey.core:jersey-common:jar:2.22.1:compile
[INFO] |  |  |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.22.1:compile
[INFO] |  |  |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.22.1:compile
[INFO] |  |  |  +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] |  |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.22.1:compile
[INFO] |  |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b31:compile
[INFO] |  |  |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b31:compile
[INFO] |  |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b31:compile
[INFO] |  |  |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile
[INFO] |  |  |  \- org.glassfish.hk2:hk2-locator:jar:2.4.0-b31:compile
[INFO] |  |  |     \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-metainf-services:jar:2.22.1:compile
[INFO] |  |  +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.22.1:compile
[INFO] |  |  +- io.dropwizard.metrics:metrics-jersey2:jar:3.1.2:compile
[INFO] |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.7:compile
[INFO] |  |  |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.7:compile
[INFO] |  |  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.7:compile
[INFO] |  |  +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.22.1:compile
[INFO] |  |  |  \- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.22.1:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-server:jar:9.2.17.v20160517:compile
[INFO] |  |  |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-io:jar:9.2.17.v20160517:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-webapp:jar:9.2.17.v20160517:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-xml:jar:9.2.17.v20160517:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-continuation:jar:9.2.17.v20160517:compile
[INFO] |  +- io.dropwizard:dropwizard-servlets:jar:0.9.3:compile
[INFO] |  |  \- io.dropwizard.metrics:metrics-annotation:jar:3.1.2:compile
[INFO] |  +- io.dropwizard:dropwizard-jetty:jar:0.9.3:compile
[INFO] |  |  +- io.dropwizard.metrics:metrics-jetty9:jar:3.1.2:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-servlet:jar:9.2.17.v20160517:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-security:jar:9.2.17.v20160517:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-servlets:jar:9.2.17.v20160517:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-http:jar:9.2.17.v20160517:compile
[INFO] |  +- io.dropwizard:dropwizard-lifecycle:jar:0.9.3:compile
[INFO] |  +- io.dropwizard.metrics:metrics-core:jar:3.1.2:compile
[INFO] |  +- io.dropwizard.metrics:metrics-jvm:jar:3.1.2:compile
[INFO] |  +- io.dropwizard.metrics:metrics-servlets:jar:3.1.2:compile
[INFO] |  |  \- io.dropwizard.metrics:metrics-json:jar:3.1.2:compile
[INFO] |  +- io.dropwizard.metrics:metrics-healthchecks:jar:3.1.2:compile
[INFO] |  +- net.sourceforge.argparse4j:argparse4j:jar:0.6.0:compile
[INFO] |  \- org.eclipse.jetty.toolchain.setuid:jetty-setuid-java:jar:1.0.3:compile
[INFO] +- io.dropwizard:dropwizard-validation:jar:0.9.3:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.2.2.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.2.1.Final:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.1.0:compile
[INFO] |  \- org.glassfish:javax.el:jar:3.0.0:compile
[INFO] +- io.dropwizard:dropwizard-db:jar:0.9.3:compile
[INFO] |  \- org.apache.tomcat:tomcat-jdbc:jar:8.0.28:compile
[INFO] |     \- org.apache.tomcat:tomcat-juli:jar:8.0.28:compile
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- com.amazonaws:aws-java-sdk-ses:jar:1.11.18:compile
[INFO] |  \- com.amazonaws:aws-java-sdk-core:jar:1.11.18:compile
[INFO] |     +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] |     +- org.apache.httpcomponents:httpclient:jar:4.5.1:compile
[INFO] |     |  +- org.apache.httpcomponents:httpcore:jar:4.4.3:compile
[INFO] |     |  \- commons-codec:commons-codec:jar:1.9:compile
[INFO] |     \- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.6.6:compile
[INFO] +- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.18:compile
[INFO] +- com.amazonaws:aws-java-sdk-sqs:jar:1.11.18:compile
[INFO] \- com.amazonaws:aws-java-sdk-s3:jar:1.11.18:compile
[INFO]    \- com.amazonaws:aws-java-sdk-kms:jar:1.11.18:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.520 s
[INFO] Finished at: 2016-07-15T10:16:16+02:00
[INFO] Final Memory: 17M/309M
[INFO] ------------------------------------------------------------------------

0 个答案:

没有答案