如何避免Maven构建中出现“重叠类”警告?

7

我有一个模块依赖于其他两个项目,但是在构建项目时出现了以下问题:

虽然没有错误,但我收到了很多关于重叠相同类的警告:

[WARNING] commons-logging-1.2.jar, jcl-over-slf4j-1.7.12.jar define 6 overlappping classes: 
[WARNING]   - org.apache.commons.logging.impl.SimpleLog$1
[WARNING]   - org.apache.commons.logging.Log
[WARNING]   - org.apache.commons.logging.impl.SimpleLog
[WARNING]   - org.apache.commons.logging.LogConfigurationException
[WARNING]   - org.apache.commons.logging.impl.NoOpLog
[WARNING]   - org.apache.commons.logging.LogFactory
[WARNING] aspectjrt-1.7.0.jar, aspectjweaver-1.8.6.jar define 128 overlappping classes: 
[WARNING]   - org.aspectj.internal.lang.reflect.SignaturePatternImpl
[WARNING]   - org.aspectj.runtime.reflect.SignatureImpl
[WARNING]   - org.aspectj.internal.lang.reflect.DeclareSoftImpl
[WARNING]   - org.aspectj.lang.reflect.AjType
[WARNING]   - org.aspectj.lang.JoinPoint$StaticPart
[WARNING]   - org.aspectj.runtime.internal.cflowstack.ThreadStackImpl11
[WARNING]   - org.aspectj.runtime.internal.cflowstack.ThreadStack
[WARNING]   - org.aspectj.internal.lang.reflect.InterTypeDeclarationImpl
[WARNING]   - org.aspectj.internal.lang.reflect.DeclareAnnotationImpl
[WARNING]   - org.aspectj.lang.annotation.SuppressAjWarnings
[WARNING]   - 118 more...
[WARNING] maven-shade-plugin has detected that some .class files
[WARNING] are present in two or more JARs. When this happens, only
[WARNING] one single version of the class is copied in the uberjar.
[WARNING] Usually this is not harmful and you can skeep these
[WARNING] warnings, otherwise try to manually exclude artifacts
[WARNING] based on mvn dependency:tree -Ddetail=true and the above
[WARNING] output
[WARNING] See http://docs.codehaus.org/display/MAVENUSER/Shade+Plugin
[INFO] Replacing original artifact with shaded artifact.

我该如何避免这些警告?

1个回答

4
使用Maven插件依赖树,并且要做到这一点。
mvn clean dependency:tree
# or (mvn 3)
mvn clean org.apache.maven.plugins:maven-dependency-plugin:3.0.1:tree

clean很重要,以避免旧的target内容产生任何副作用。

然后,根据您使用的插件,您可以添加排除规则,如this answer所示,以避免这些错误消息。

MRUNIT-209中所示,dependency-tree的2.5.1版本不适用于Maven 3.x.x。
使用完整名称org.apache.maven.plugins:maven-dependency-plugin:3.0.1:tree将强制使用maven-dependency-plugin的3.0.1版本。


[INFO] --- maven-dependency-plugin:2.5.1:tree (default-cli) @ user-session-consumer --- [WARNING] 注入错误:org.apache.maven.shared.dependency.graph.internal.Maven3DependencyGraphBuilder java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyNode - Anuj Vishwakarma
你正在使用哪个版本的Maven? - VonC
Apache Maven 3.3.9 - Anuj Vishwakarma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接