2012-02-02 8 views
21

Estoy haciendo algunas secuencias de comandos y necesito obtener una lista de todos los poms de padres para cualquier pom dado. El complemento de dependencia parece estar solo interesado en las dependencias que se enumeran en la sección de dependencia del pom, pero no parece haber una manera de mostrar los poms principales, que también son dependencias necesarias para que Maven funcione.¿Cómo se muestra la jerarquía Macul POM?

¿Me falta algo básico?

Respuesta

22

No hay un simple comando Maven que le muestre la cadena de POM originales para un pom.xml. La razón de esto es que no es una pregunta común que uno normalmente haría (más sobre eso a continuación). Para su secuencia de comandos, solo tendrá que analizar el archivo pom.xml, obtener las coordenadas del artefacto padre, obtener un control del archivo pom.xml del artefacto y luego analizar su archivo pom.xml (y repetir). Lo siento, pero no hay atajos que conozca, pero .

Tiene razón en que técnicamente el padre pom es una dependencia de su proyecto, pero no es una Dependencia de Maven literal y se maneja de manera completamente diferente. La cadena de poms padres, junto con los perfiles activos, su archivo settings.xml y Maven super pom del directorio de instalación se combinan para crear el pom efectivo de su proyecto. El POM efectivo es lo que Maven realmente usa para hacer su trabajo. Básicamente, la cadena de herencia pom padre ya está resuelta y combinada antes de que el complemento de dependencia (o cualquier otro complemento) se active.

Las preguntas que la mayoría de la gente suele hacer son '¿cómo se ve mi REAL pom.xml realmente cuando Maven termina de combinar todo?' o '¿Cuál es el resultado de mi cadena de herencia de padres poms?' o '¿Cómo se ven afectadas mis propiedades pom.xml por un perfil activo?' El pom efectivo te dirá todo esto.

Sé que no lo has preguntado, pero para otros que lo lean, si quieres ver tu pom.xml padre, simplemente abre el pom.xml en el editor M2Eclipse POM y haz clic en el enlace del artefacto padre en el pestaña de descripción general De esta forma, puede avanzar rápidamente en la cadena de archivos pom.xml con solo un clic por pomo. Sería un proyecto extraño que tuviera más de 3 o 4 poms de herencia padres.

Si quiere ver su pom efectivo, puede ejecutar el comando mvn help:effective-pom. Alternativamente, puede hacer clic en la pestaña Effective POM en el editor POM de M2Eclipse.

+0

Gran respuesta, gracias! Al no ver respuestas en los días posteriores a la publicación de la pregunta, escribí una utilidad java para darme la información usando la biblioteca 'maven-model' de Maven. El objeto Model (una instancia POM) tiene un método getParent() que me permitió leer recursivamente el árbol. – Todd

7

Solución básica

mvn dependency:display-ancestors

mostrará los padres así:

[INFO] Ancestor POMs: org.springframework.boot:spring-boot-starter-parent:1.4.0.RELEASE <- org.springframework.boot:spring-boot-dependencies:1.4.0.RELEASE

se requiere en la versión 2.9 + plug-in de dependencia.Si el plugin es mayor y por alguna razón usted no puede actualizar a continuación, llamar a:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.9:display-ancestors 

mejorada solución

La jerarquía-experto-plugin (que escribí) puede mostrar información adicional sobre poms importados de esta manera:

[INFO] Displaying hierarchy. Set level=full to display dependencies in dependencyManagement 
[INFO] PARENT org.springframework.boot:spring-boot-samples:1.4.1.BUILD-SNAPSHOT 
[INFO] PARENT org.springframework.boot:spring-boot-starter-parent:1.4.1.BUILD-SNAPSHOT 
[INFO]  PARENT org.springframework.boot:spring-boot-dependencies:1.4.1.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework:spring-framework-bom:4.3.3.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework.data:spring-data-releasetrain:Hopper-BUILD-SNAPSHOT 
[INFO]   PARENT org.springframework.data.build:spring-data-build:1.8.4.BUILD-SNAPSHOT 
[INFO]  IMPORT org.springframework.integration:spring-integration-bom:4.3.1.RELEASE 
[INFO]  IMPORT org.springframework.security:spring-security-bom:4.1.3.RELEASE 

detalles aquí: https://github.com/ExampleDriven/hierarchy-maven-plugin

+1

Tenga en cuenta que necesita al menos v2.9 del complemento de dependencia para que ese objetivo esté disponible: https://maven.apache.org/plugins/maven-dependency-plugin/display-ancestors-mojo.html – mac

Cuestiones relacionadas