2009-11-21 12 views
88

Tengo una biblioteca que distribuyo usando maven 2. El usuario típico de esta biblioteca no usa maven para construir sus aplicaciones, pero es probable que esté familiarizado con maven y probablemente lo tenga instalado.¿Una línea de comando simple para descargar un artefacto maven2 remoto al repositorio local?

Me gustaría documentar un comando "simple" de una línea que pueden usar para descargar los artefactos de mi biblioteca a su ~/.m2/repository local sin necesidad de configurar un pom.xml para hacerlo.

pensé que había una manera de hacer esto, pero me parece que no puede encontrar después de mirar a través de la documentación install:install-file y dependency plugin. He intentado cosas como:

mvn install:install-file -DrepositoryId=java.net -Durl=http://download.java.net/maven/2/ -Dfile=robo-guice-0.4-20091121.174618-1.jar -DpomFile=robo-guice-0.4-20091121.174618-1.pom -DgroupId=robo-guice -DartifactId=robo-guice -Dversion=0.4-SNAPSHOT -Dpackaging=jar 

pero creo que estoy ladrando al árbol equivocado, ya que parece que el plugin de instalación se utiliza para copiar archivos de construcción local en el repositorio local, en lugar de descargar objetos remotos en el local de repositorio.

Este es el artefacto que me gustaría instalar: http://download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

Es esto posible utilizando Maven?

+0

duplicados de http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact-in-one- línea de comandos – Isaac

+0

Posible duplicado de [¿Cómo puedo descargar un artefacto Maven específico en una línea de comando?] (http://stackoverflow.com/questions/1895492/how-can-i-download-a-specific-maven-artifact -in-one-command-line) – nullpointer

Respuesta

127

Desde la versión 2.1 del Maven Dependency Plugin, hay un objetivo dependency:get para este propósito. Para asegurarse de que está utilizando la versión correcta del plugin, tendrá que utilizar el "nombre completo":

 
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \ 
    -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT 
+0

Muy útil para mostrar cómo instalar el complemento de dependencia. –

+1

Pascal, ¿me puede decir cómo definir usuario + contraseña para llegar al repositorio? El truco con http: // usuario: contraseña @ repourl no funcionó. –

+0

También se intentó con un -DrepositoryId = algo que se define en la configuración.xml, no funciona –

40

les dan un pom trivial con estos frascos enumerados como dependencias e instrucciones para ejecutar:

mvn dependency:go-offline 

Esto hará que las dependencias al repositorio local.

Una solución más directa es dependency:get, pero es un montón de argumentos para escribir:

mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version 
+0

Buena idea, aunque una línea de comandos podrían copiar y pegar sería más fácil – emmby

+0

Si pudiera pensar en una, la publicaría. No sé de ningún complemento que haga todo lo que se necesita. Sé cómo escribir uno ... – bmargulies

+0

El 'get' mojo realmente espera que' -DrepoUrl' esté presente, no '-DrepositoryUrl'. En cuanto a los argumentos para escribir, no hay magia, debes proporcionar estas informaciones de una manera u otra. –

16

partir de la versión 2.4 del Maven Dependency Plugin, también se puede definir un punto de destino para el artefacto utilizando la bandera -Ddest. Debería apuntar a un nombre de archivo (no a un directorio) para el artefacto de destino. Ver el parameter page para los parámetros adicionales que se pueden utilizar

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get \ 
    -DremoteRepositories=http://download.java.net/maven/2 \ 
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT \ 
    -Ddest=c:\temp\robo-guice.jar 
+0

¡Gracias! -Ddest está marcado como obsoleto. ¿Hay una nueva solución nueva? – Dimath

+0

Usar dependencia: copia el objetivo en su lugar. https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html –

+0

el objetivo de la copia no copia los fragmentos transitivos. – Renato

Cuestiones relacionadas