shade plugin org exclude jackson maven-shade-plugin jarjar

jackson - org - maven shade plugin fat jar



ReubicaciĆ³n de clases fastxml.jackson en my.package.fastxml.jackson (1)

Al final he usado JarJar y he creado un JAR modificado. Luego agregué una dependencia a mi código y lo actualicé manualmente, por lo que ahora se relaciona con el paquete modificado en lugar del paquete original.

Aquí hay un procedimiento que describe lo que he hecho:

Cómo usar JarJar para reubicar clases de un JAR de un paquete a otro

En este ejemplo, cambiaremos el paquete de "com.fasterxml.jackson" a "io.kuku.dependencies.com.fasterxml.jackson". - El JAR de origen se llama "jackson-databind-2.6.4.jar" y el nuevo JAR modificado (objetivo) se llama "kuku-jackson-databind-2.6.4.jar". - El archivo JAR "jarjar" está en la versión 1.4

  1. Crea un archivo "rules.txt". El contenido del archivo debe ser (ver el período anterior al carácter ''@''): rule com.fasterxml.jackson. ** io.kuku.dependencies.com.fasterxml.jackson. @ 1

  2. Ejecute el siguiente comando: java -jar jarjar-1.4.jar process rules.txt jackson-databind-2.6.4.jar kuku-jackson-databind-2.6.4.jar

Instalación de los JAR modificados en el repositorio local

En este caso, estoy instalando 3 archivos ubicados en la carpeta "c: / my-jars /".

mvn install: install-file -Dfile = C: / my-jars / kuku-jackson-annotations-2.6.4.jar -DgroupId = io.kuku.dependencies -DadifactId = 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 -DadifactId = 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 -DadifactId = kuku-jackson-annotations -Dversion = 2.6.4 - Dpackaging = jar

Usando los JAR modificados en el pom del proyecto

En este ejemplo, este es el elemento "dependencias" en los proyectos pom:

<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>

Estoy tratando de reubicar los paquetes de "com.fasterxml.jackson" en mi propio paquete (es decir, "mypackage.com.fasterxml.jackson") y luego lo consumo en otro JAR que tengo.

Logré ejecutar el plugin maven-shade para hacerlo usando esta configuración:

<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>

El problema al que me enfrento es cuando intento consumirlo, por alguna razón Eclipse sigue agregando una dependencia al jackson original ("mypackage.com.fasterxml.jackson") y no al nuevo.

Para que quede claro, mi configuración es: - Jar X tiene una dependencia en ThirdPartyArtifcats. - ThirdPartyArtifcats hace referencia a Jackson y ejecuta el plugin maven-shade, por lo que contiene una versión modificada de Jackson (mypackage.com.fasterxml.jackson).

Cuando trato de usar el ObjectMapper de Jackson en Jar X, Eclipse sigue dando una referencia al jackson original.

¡Agradeceré tu ayuda!