小警告
尽管这还不能说明为什么要使用Maven-shade-plugin(因为所选答案描述得很好),但我想指出我对此有问题。它更改了JAR(因为它在做什么),并且导致了我的软件的回归。
因此,我没有使用此(或maven-jarjar-plugin),而是使用了JarJar的二进制文件,该二进制文件似乎可以正常工作。
我在这里发布我的解决方案,因为花了一些时间才找到一个不错的解决方案。
Downlaod JarJar的JAR文件
您可以从以下位置下载jar:https:
//code.google.com/p/jarjar/
在左侧菜单中,您有一个下载链接。
如何使用JarJar以便将JAR的类从一个包重定位到另一个包
在此示例中,我们将包从“ com.fasterxml.jackson”更改为“ io.kuku.dependencies.com.fasterxml.jackson”。-源JAR被称为“ jackson-databind-2.6.4.jar”,新的修改的(目标)JAR被称为“ kuku-jackson-databind-2.6.4.jar”。-“ jarjar” JAR文件的版本为1.4
创建一个“ rules.txt”文件。文件内容应为(注意“ @”字符前的句点):规则com.fasterxml.jackson。** io.kuku.dependencies.com.fasterxml.jackson。@ 1
运行以下命令:java -jar jarjar-1.4.jar处理rules.txt jackson-databind-2.6.4.jar kuku-jackson-databind-2.6.4.jar
将修改后的JAR安装到本地存储库
在这种情况下,我将安装位于“ c:\ my-jars \”文件夹中的3个文件。
mvn install:安装文件-Dfile = C:\ my-jars \ kuku-jackson-annotations-2.6.4.jar -DgroupId = io.kuku.dependencies -DartifactId = kuku-jackson-annotations -Dversion = 2.6.4- Dpackaging = jar
mvn install:安装文件-Dfile = C:\ my-jars \ kuku-jackson-core-2.6.4.jar -DgroupId = io.kuku.dependencies -DartifactId = kuku-jackson-core -Dversion = 2.6.4- Dpackaging = jar
mvn install:安装文件-Dfile = C:\ my-jars \ kuku-jackson-databind-2.6.4.jar -DgroupId = io.kuku.dependencies -DartifactId = kuku-jackson-annotations -Dversion = 2.6.4- Dpackaging = jar
在项目的pom中使用修改后的JAR
在此示例中,这是项目pom中的“ dependencies”元素:
<dependencies>
<!-- ================================================== -->
<!-- kuku JARs -->
<!-- ================================================== -->
<dependency>
<groupId>io.kuku.dependencies</groupId>
<artifactId>kuku-jackson-annotations</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>io.kuku.dependencies</groupId>
<artifactId>kuku-jackson-core</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>io.kuku.dependencies</groupId>
<artifactId>kuku-jackson-databind</artifactId>
<version>2.6.4</version>
</dependency>
</dependencies>