我正在使用Maven程序集插件,我使用它生成单个Jar文件,其中包含我的应用程序的所有依赖项(根据jarlib.xml
中的定义解压缩:https://gist.github.com/knyttl/7cc0730ae0fb6947cbda)。然后,可以使用dependency.jar
将此application.jar
放在类路径上,并以java -cp application.jar:dependencies.jar my.class.Runner
运行。然而,在解压缩jar时,问题是相同工件的多个版本。
例如我使用的org.apache.xmlrpc:xmlrpc-server:jar:3.1.3
取决于javax.servlet:servlet-api:jar:2.3
。在我的应用程序中,我需要使用javax.servlet
的不同版本,但在解包时,会跳过新版本,而是使用旧版本。
xmlrpc-server
给出的依赖?javax.servlet
的优先顺序?-cp application.jar:dependencies.jar
一起使用?当我尝试在没有解压缩的情况下构建jar时,在运行应用程序时没有找到任何内部jar类。答案 0 :(得分:1)
听起来你真正想要的是阴影插件 - 能够创建包含所有这些的单个jar。 https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html
答案 1 :(得分:1)
我找到的最佳解决方案是直接在pom中的<exclusions>
标记中直接使用<dependency>
,而不使用任何插件。