Según el documentation, la versión de Maven: realiza el objetivo revisa el proyecto y luego crea una nueva instancia de Maven para construirlo. Por algún motivo, la instancia bifurcada parece ignorar el settings.xml
del usuario, lo que provoca un error en mi caso porque ese archivo tiene la definición de una propiedad que se utiliza para componer la URL del repositorio en el archivo pom padre.Proceso extraído de la versión de Maven: el complemento de ejecución ignora la configuración del usuario.xml?
del usuario settings.xml
Definición de una propiedad en un "nexo" perfil que está siempre activo.<profiles> <profile> <id>nexus</id> <properties> <dist.url>http://host.com/nexus/content/repositories</dist.url> </properties> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
pom.xml del padre
uso de la propiedad definida para componer la URL del repositorio.<distributionManagement> <repository> <id>nexus</id> <url>${dist.url}/releases</url> </repository> </distributionManagement>
Comando ejecutado:
mvn release:perform
de salida (después Indica haber comprobado con éxito, construido, probado y empaquetado del proyecto):
[INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] BUILD FAILURE [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] Total time: 3.659s [INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012 [INFO] [INFO] Final Memory: 21M/307M [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [WARNING] The requested profile "nexus" could not be activated because it does not exist. [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-project: Failed to deploy artifacts: Could not transfer artifact com.acme.access:my-project:jar:1.0 from/to nexus (${dist.url}/releases): Error transferring file: no protocol: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar -> [Help 1]
Observe cómo la instancia de Maven con bifurcación está intentando subir a $ {dist.url}, lo que indica que la propiedad definida en setti ngs.xml no fue leído. Además, el mensaje de advertencia informa que no se encontró el perfil "nexus". Supongo que la instancia principal de Maven pasó la información del perfil a la instancia bifurcada, por lo que supo buscarla, pero como ignoró (o no encontró) la configuración del usuario.xml, no pudo encontrar ese perfil.
La única manera que he encontrado para eludir esto es especificar manualmente la ubicación del archivo de settings.xml
mediante el uso de línea de comandos -s
argumento de Maven "envuelta" por el argumento de que el plugin arguments
, como en
mvn release:perform -Darguments="-s C:\Users\theuser\.m2\settings.xml"
¿Se está comportando el plugin de una manera esperada/correcta? ¿Hay alguna manera de mantener la definición de propiedad dentro del settings.xml
del usuario sin tener que especificar la ubicación del archivo como he hecho anteriormente?
Más información:
El problema parece ser específicamente con el complemento de no encontrar el usuario de
settings.xml
, como copiar la información de perfil en el mundialsettings.xml
tenga como consecuencia que funcione.El nombre del usuario
settings.xml
se ha nombrado/creado correctamente porque ejecutarhelp:active-profiles
indica que el perfil está activo. La creación e implementación manual conmvn clean deploy
también funciona correctamente (es decir, el URL del repositorio se calcula correctamente y el artefacto se carga).
Creo que en mi caso, un tipo similar de problema.http: //stackoverflow.com/questions/18636196/maven-issue-the-goal-you-specified-requires-a-project-to-execute-but-here -is –