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.