我正在尝试将包从“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 不断添加对原始杰克逊(“mypackage.com.fasterxml.jackson”)的依赖,而不是新的。
为了清楚起见,我的设置是: - Jar X 在 ThirdPartyArtifcats 中有依赖关系。- ThirdPartyArtifcats 引用 Jackson 并运行 maven-shade 插件,因此它包含 Jackson 的修改版本 (mypackage.com.fasterxml.jackson)。
当我尝试在 Jar X 中使用 Jackson 的 ObjectMapper 时,Eclipse 一直引用原始的 jackson。
我会感谢你的帮助!