我正在尝试将包从“com.fasterxml.jackson”重新定位到我自己的包中(即“mypackage.com.fasterxml.jackson”),然后在我拥有的另一个JAR中使用它。
我已设法运行maven-shade插件来使用此配置执行此操作:
compatible mode
我面临的问题是当我尝试使用它时,由于某些原因Eclipse不断添加对原始jackson(“mypackage.com.fasterxml.jackson”)的依赖,而不是新的。
为了清楚起见,我的设置是: - Jar X在ThirdPartyArtifcats中具有依赖性。 - ThirdPartyArtifcats引用Jackson并运行maven-shade插件,因此它包含Jackson的修改版本(mypackage.com.fasterxml.jackson)。
当我尝试在Jar X中使用Jackson的ObjectMapper时,Eclipse不断提供对原始jackson的引用。
我将感激你的帮助!
答案 0 :(得分:1)
最后,我使用了JarJar并创建了一个修改过的JAR。然后,我已经为我的代码添加了依赖项并手动更新,因此它现在与修改后的包而不是原始包相关。
这是一个描述我所做过的事情的程序:
在这个例子中,我们将从" com.fasterxml.jackson"更改包。 to" 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 process rules.txt jackson-databind-2.6.4.jar kuku-jackson-databind-2.6.4.jar
在这种情况下,我要安装位于" c:\ my-jars \"上的3个文件。文件夹中。
mvn install:install-file -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:install-file -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:install-file -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
在这个例子中,这是"依赖"项目中的元素:
<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>