tutorial teoria referente from maven-2

maven-2 - teoria - maven tutorial



¿Cómo muestro la jerarquía de Maven POM? (2)

Solucion basica

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

Si su proyecto define la versión 3.1 o posterior, puede usar:

mvn dependency:display-ancestors

La salida se parece a:

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

Solucion mejorada

La jerarquía-maven-plugin (que escribí) puede mostrar información adicional sobre poms importados como este:

[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

Los detalles están aquí: https://github.com/ExampleDriven/hierarchy-maven-plugin

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

¿Me estoy perdiendo algo básico?


No hay un comando simple de Maven que le muestre la cadena de POM principales para un pom.xml. La razón de esto es que no es una pregunta común que uno haría normalmente (más sobre esto más adelante). Para su script, solo tendrá que analizar el archivo pom.xml, obtener las coordenadas del artefacto principal, obtener una retención del archivo pom.xml del artefacto y luego analizar su archivo pom.xml (y repetir). Lo siento, pero no hay ningún atajo que conozca, pero otras personas han resuelto problemas similares .

Tiene razón en que técnicamente el pom principal 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 principales, junto con los perfiles activos, su archivo settings.xml y el super pom Maven 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 principal ya está resuelta y combinada antes de que el complemento de dependencia (o cualquier otro complemento) incluso se active.

La pregunta que la mayoría de la gente suele hacer es "¿cómo se ve realmente mi pom.xml REAL 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 de pom.xml por un perfil activo?'' El pom efectivo te dirá todo esto.

Sé que no preguntaste, pero para otros que lean esto, si quieres ver tu pom.xml principal, simplemente abre el pom.xml en el editor P2 de M2Eclipse y haz clic en el enlace del artefacto principal en la pestaña de información general. De esta manera, puede subir rápidamente la cadena de archivos pom.xml con un solo clic por pom. Sería un proyecto extraño que tenía más de 3 o 4 padres padres de herencia.

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