shade plugin exclude example dependency java maven maven-shade-plugin

java - exclude - ¿Cuál es el propósito de dependency-reduced-pom.xml generado por el plugin de sombra?



maven shade plugin maven (2)

Leí los maven.apache.org/plugins/maven-shade-plugin/… unas cien veces más o menos y todavía no podía entender para qué sirve, cuál es el caso de uso.

Finalmente, esto es lo que pienso: digamos que tiene un proyecto con dependencias A, B, C, D, E. En el pom.xml , configura el plugin de sombras de tal forma que cuando crea el uber-jar (llámalo foo.jar ), incluye A, B, C en el foo.jar sombreado pero, por algún motivo, usted decide no incluir D, E en el contenedor sombreado, aunque su proyecto dependa de ellos. Un caso concreto son las dependencias que solo se necesitan para pruebas (por ejemplo, cualquier dependencia que tenga un scope de test y no esté incluida en el contenedor sombreado). La dependency-reduced-pom.xml definirá D, E en ella. La idea es que si alguien quiere usar foo.jar dependency-reduced-pom.xml proporciona una pista de algún tipo que tenga en foo.jar que a foo.jar le faltan las dependencias D, E en él; foo.jar bajo su propio riesgo. Luego, puede decidir agregar D, E explícitamente en el proyecto que usará foo.jar .

Por lo tanto, dependency-reduced-pom.xml es más parecido a missing-dependencies.xml y enumera las dependencias que faltan en el uber-jar que se muestra en el plugin de sombra.

Leí los documentos y no encontré nada que indique para qué se usa.


La sombra: la sombra Mojo está bastante bien documentada, especialmente sobre el parámetro createDependencyReducedPom , que creará ese archivo dependency-reduced-pom.xml : maven.apache.org/plugins/maven-shade-plugin/…

En resumen, esto es bastante útil si tiene la intención de utilizar ese JAR sombreado (en lugar del JAR normal) como una dependencia para otro módulo. That dependency-reduced-pom.xml no contendrá los JAR ya presentes en el sombreado, evitando la duplicación inútil.