我想使用Maven-shade-plugin创建uber-jar。但是当我调用mvn package
命令时,Maven报告有一些重叠的类。我附加了所有有问题的重叠,其中一些是由于库的旧版本和新版本(Log4J)引起的,但是其中一些似乎具有相同的类-
例如javax.mail和mailapi / smtp / imap等。
在这种情况下最好的办法是什么?有一些关键的方法如何确定哪些重叠是安全的,而忽略哪些需要正确的呢?
- mailapi-1.4.3.jar, javax.mail-1.5.0.jar define 166 overlappping classes
- spring-2.5.6.SEC03.jar, spring-tx-3.1.4.RELEASE.jar define 176 overlappping classes:
- spring-beans-3.1.4.RELEASE.jar, spring-2.5.6.SEC03.jar define 283 overlappping classes:
- slf4j-log4j12-1.7.5.jar, slf4j-impl-2.0-beta2.jar define 3 overlappping classes:
- spring-2.5.6.SEC03.jar, spring-context-support-3.1.4.RELEASE.jar define 55 overlappping classes:
- aopalliance-1.0.jar, spring-2.5.6.SEC03.jar define 9 overlappping classes:
- imap-1.5.0.jar, javax.mail-1.5.0.jar define 87 overlappping classes:
- commons-logging-api-1.1.jar, commons-logging-1.1.3.jar define 19 overlappping classes:
- spring-2.5.6.SEC03.jar, spring-core-3.1.4.RELEASE.jar define 161 overlappping classes:
- spring-2.5.6.SEC03.jar, spring-context-3.1.4.RELEASE.jar define 326 overlappping classes:
- log4j12-api-2.0-beta3.jar, log4j-1.2.17.jar define 23 overlappping classes:
- spring-aop-3.1.4.RELEASE.jar, spring-2.5.6.SEC03.jar define 237 overlappping classes:
- spring-jdbc-3.1.4.RELEASE.jar, spring-2.5.6.SEC03.jar define 239 overlappping classes:
- quartz-1.8.6.jar, quartz-jobs-2.2.1.jar define 15 overlappping classes:
- smtp-1.5.0.jar, javax.mail-1.5.0.jar define 17 overlappping classes:
- spring-asm-3.1.4.RELEASE.jar, spring-2.5.6.SEC03.jar define 31 overlappping classes:
编辑: 此应用程序“ A”将我的另一个Java应用程序用作Maven依赖关系-我将其称为“ B”。此B应用程序使用javax.mail
1.5.1版。该库也使用第一个应用程序。但是当我调用mvn package命令时,Maven注意到了javax.mail-api-1.5.1.jar, javax.mail-1.5.1.jar define 135 overlappping classes
。
是这个问题,如果是的话,该如何解决?还是可以忽略呢?
要做的第一件事是尽可能消除重叠类的许多明显原因。例如:
您不太可能需要在有阴影的jar中保留类的冲突版本。如果这样做,shade插件还允许重定位类,如http://maven.apache.org/plugins/maven-
shade-plugin/examples/class-
relocation.html中所述
我还设置了exec maven插件,运行按预期运行程序。 下面是如何设置exec maven插件的
Maven shade plugin 为 Maven 提供了 Jar 打包的神器,包括将所依赖的 jar 包都打包到一起。
我有一个项目,它使用maven-assembly-plugin打包了几个(可执行的jar)程序集--基本上相同的代码,但针对不同的客户机使用了不同的数据集。 我需要在可执行jar中使用spring,由于spring中的文件命名,我需要使用maven-shade-plugin创建jar。这工作很好,我可以创建可执行的jar,但我不能确定如何将我的其他文件组装到这个新的shaded jar,因为sha
问题内容: 我正在使用Maven-Shade-Plugin创建可运行的Uber jar。根据本页上的最后一帧,可以使用以下方法将罐子的大小最小化: 但是,此功能未考虑log4j.properties文件中声明的类。因此,例如,即使在log4j.properties文件中声明了它,也不包含在Uber- jar中。 我相信我将在Spring面临同样的问题。如果我的代码仅引用接口A,并且我的Spring
有谁知道如何使用Gradle制作一个uber/fat/shade sources-jar(和javadoc-jar)? 生成的 Jar 不仅应包含当前项目的源代码,还应包含其依赖项的源代码。我一直在研究,除其他外,一种香草方式和使用Shadow插件的方式。两者都擅长创建一个普通的uber/fat/shade jar,但它们似乎都不支持创建sources-jar的方法。