gpt4 book ai didi

jackson - 将 fasterxml.jackson 类重定位到 my.package.fasterxml.jackson

转载 作者:行者123 更新时间:2023-12-04 14:30:45 30 4
gpt4 key购买 nike

我正在尝试将包从“com.fasterxml.jackson”重新定位到我自己的包(即“mypackage.com.fasterxml.jackson”),然后在我拥有的另一个 JAR 中使用它。

我已经设法运行 maven-shade 插件来使用这个配置来完成它:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<createDependencyReducedPom>true</createDependencyReducedPom>
<relocations>
<relocation>
<pattern>com.fasterxml.jackson</pattern>
<shadedPattern>mypackage.com.fasterxml.jackson</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>

我面临的问题是当我尝试使用它时,出于某种原因,Eclipse 不断向原始 jackson(“mypackage.com.fasterxml.jackson”)而不是新的添加依赖项。

为了清楚起见,我的设置是:- Jar X 依赖于 ThirdPartyArtifcats。- ThirdPartyArtifcats 引用 Jackson 并运行 maven-shade 插件,因此它包含 Jackson (mypackage.com.fasterxml.jackson) 的修改版本。

当我尝试在 Jar X 中使用 Jackson 的 ObjectMapper 时,Eclipse 一直在提供对原始 jackson 的引用。

我会感谢你的帮助!

最佳答案

最后我使用了 JarJar 并创建了一个修改过的 JAR。然后我在我的代码中添加了依赖项并手动更新它,因此它现在与修改后的包相关,而不是原始包。

这是描述我所做工作的过程:


如何使用 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

  1. 创建“rules.txt”文件。该文件的内容应该是(注意“@”字符之前的句点):规则 com.fasterxml.jackson.** io.kuku.dependencies.com.fasterxml.jackson.@1

  2. 运行以下命令:java -jar jarjar-1.4.jar process rules.txt jackson-databind-2.6.4.jar kuku-jackson-databind-2.6.4.jar


将修改后的 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 安装:安装文件 -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>

关于jackson - 将 fasterxml.jackson 类重定位到 my.package.fasterxml.jackson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34764732/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com