0

我正在使用 Maven 程序集插件,我使用它为我的应用程序生成具有所有依赖项的单个 Jar 文件(jarlib.xml根据此处给出的定义解包:https ://gist.github.com/knyttl/7cc0730ae0fb6947cbda )。然后dependency.jar可以使用 my 将其放在类路径上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,但是在解包时,会跳过新版本,而是使用旧版本。

  1. 有没有办法忽略由 给出的依赖关系xmlrpc-server
  2. 有没有办法优先考虑新版本的javax.servlet
  3. 有没有一种方法可以创建单个 jar 而无需解压依赖项并能够与它们一起使用-cp application.jar:dependencies.jar?当我尝试在不解包的情况下构建 jar 时,运行应用程序时没有找到任何内部 jar 类。
4

2 回答 2

1

听起来你真正想要的是 shade 插件 - 创建一个包含所有这些的单个 jar 的能力。 https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html

于 2013-07-21T21:32:30.543 回答
1

我找到的最佳解决方案是<exclusions>直接在 pom 中的<dependency>标签中直接使用,无需任何插件。

于 2013-07-22T06:56:46.493 回答