es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar el bloque “parent” del archivo pom del proyecto Maven Shade con la opción de “Flatten”.

El proyecto tiene la siguiente estructura:

FatJarRootPom tiene dependencias para X y Y.
FatJarA y FatJarB declaran a FatJarRootPom como su padre para obtener sus dependencias X y Y sombreadas en su JAR junto con sus propias dependencias.

El problema es que el complemento Shade dejará una referencia al padre en el dependency-reduced-pom.xml, por lo que el POM de FatJarA seguirá dependiendo explícitamente de X y Y a pesar de tenerlos dentro del JAR.

El complemento Flatten puede eliminar el padre, por lo que sería óptimo ejecutar el complemento Shade en el POM aplanado. Procesará todas las dependencias y luego las eliminará del dependency-reduced-pom.xml. Sin embargo, cuando configuro el complemento Flatten, el complemento Shade no tomará su salida y seguirá produciendo un POM incorrecto.

He encontrado esta respuesta que sugiere cambiar el orden de invocación de shade y flatten para que shade venga primero, pero no funcionará, ya que las dependencias de FatJarRootPom seguirán estando en el POM, lo cual estoy tratando de evitar.

¿Quizás haya alguna otra forma de eliminar solo la sección del padre del dependency-reduced-pom.xml sin el complemento flatten?

Actualización: He intentado cambiar mi FatJarRootPom a una dependencia POM FatJarPom con las dependencias transitivas enumeradas en él, y curiosamente, el complemento Maven Shade especificamente omitirá la dependencia POM y no la eliminará del POM reducido de dependencia, incluso si eso implica que todas las dependencias sombreadas aparecerán absolutamente como dependencias del artefacto fat-jar.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Eliminación de la sección padre del archivo dependency-reduced-pom.xml en el complemento Maven Shade

    Si estás experimentando el problema de que el complemento Shade deja una referencia a la sección padre en el archivo dependency-reduced-pom.xml incluso después de ejecutar el complemento Flatten, y quieres eliminar esta sección sin usar el complemento Flatten, hay otra forma.

    Puedes intentar cambiar tu FatJarRootPom a una dependencia POM FatJarPom con las dependencias transitivas listadas en él. Sin embargo, el complemento Shade específicamente omite la dependencia POM y no la eliminará del archivo dependency-reduced-pom.xml.

    Otra solución es cambiar el orden de invocación de los complementos Shade y Flatten. Puedes intentar ejecutar primero el complemento Shade y luego el complemento Flatten, de manera que las dependencias de FatJarRootPom se procesen primero y luego se eliminen del archivo dependency-reduced-pom.xml. Sin embargo, esto puede no funcionar si aún estás intentando evitar tener las dependencias de FatJarRootPom en el archivo POM.

    En resumen, no hay una forma directa de eliminar la sección padre del archivo dependency-reduced-pom.xml sin usar el complemento Flatten o modificar la estructura del proyecto.

Comments are closed.