2012-08-01 16 views
7

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 mundial settings.xml tenga como consecuencia que funcione.

  • El nombre del usuario settings.xml se ha nombrado/creado correctamente porque ejecutar help:active-profiles indica que el perfil está activo. La creación e implementación manual con mvn clean deploy también funciona correctamente (es decir, el URL del repositorio se calcula correctamente y el artefacto se carga).

+0

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 –

Respuesta

10

No es necesariamente un error en el maven-release-plugin.Parece que te encontraste con este error de Maven: MNG-5224 El error debería solucionarse en Maven 3.0.4.

+1

De acuerdo, es bueno saber que este comportamiento se considera un error. ¡Gracias! – jsiqueira

+0

Tengo el mismo problema con Maven 3.0.4 - r1232337 – Aure77

+0

Mismo problema con Maven 3.3.3 ... – gogognome

Cuestiones relacionadas