2011-08-29 17 views
6

Estoy usando Maven 3. Estoy intentando implementar un artefacto de un tercero en un repositorio remoto, pero estoy recibiendo un error extraño. El comando que estoy usando para desplegar esMaven: Problema al implementar un JAR de terceros en un repositorio remoto

mvn deploy:deploy-file -DgroupId=com.myco.util.ant \ 
    -DartifactId=selenium-ant-task \ 
    -Dversion=1.4 \ 
    -Dpackaging=jar \ 
    -Dfile=/Users/davea/.m2/repository/com/myco/util/ant/selenium-ant-task/1.4/selenium-ant-task-1.4.jar \ 
    -DrepositoryId=sonatype-nexus \ 
    -Durl=http://sonatype.myco.com/nexus/content/repositories/releases 

Y el error que consigo cuando ejecuta este comando es

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy-file (default-cli) on project maven-selenium-plugin: The parameters 'url' for goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy-file are missing or invalid -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 

¿Qué está pasando aquí? He definido mi repositoryId, "ssonatype-nexus" en mi archivo ~/.m2/settings.xml y verifiqué que las credenciales allí son correctas.

Gracias por cualquier ayuda, - de Dave

+1

'Vuelva a ejecutar Maven usando el modificador -X para habilitar el registro completo de depuración. Podría ayudarle a corregir su error :) – Jacob

Respuesta

1

parece que su URL tiene un formato incorrecto.

Probar:

-Durl = file: // path_to_m2_repo

See here for more.

Editar: Tenga en cuenta que la URL es para el repositorio local en este caso. Maven debería implementarse en un Nexus basado en POM y -DrepositoryId.

+0

El formato de URL es correcto: a pesar de lo que las guías de uso usan como ejemplos, no necesita implementar en una ubicación de archivo (que aún se consideraría un repositorio remoto, incluso si está alojado en un sistema de archivos). –

+0

Hola, no entiendo lo que estás sugiriendo. Cambié mi URL para que fuera "-Durl = file: /// path/to/jar/I/want/to/deploy" pero aún recibí el error. ¿Podría dar un ejemplo usando la ruta al archivo que deseo implementar y al ID del repositorio? – Dave

+0

Por lo que entiendo de ese documento es que el Durl debe ser la ruta a su repositorio local (o donde reside el archivo), no al archivo que desea implementar, ese es el archivo -Difile. El -DrepositoryID debe coincidir con el ID que especifique en ubicado en el archivo POM. Asumiría que esto llevaría el Dfile dado a su repo m2 (Durl) y lo desplegaría al DrepositoryID definido en el POM, en este caso su Nexus. Si eso no funciona, me gustaría ver sus atributos desde su POM. Algo así como – Tony

3

deploy:deploy-file no está destinado a ejecutarse en un directorio con un archivo pom.xml; debe ejecutarlo en otro lugar. Si desea que se cargue un POM específico, no olvide el argumento -DpomFile, ya que el valor predeterminado es generar uno básico.

Sin embargo, veo que está implementando un archivo desde el repositorio local; si fue colocado allí por una construcción Maven, es mejor que ese proyecto realice la implementación, utilizando el elemento <distributionManagement> y la fase del ciclo de vida deploy.

Cuestiones relacionadas