2010-08-30 11 views
30

Me gustaría algo como lo siguiente.Cómo descargar frascos de Maven Central sin escribir ningún pom.xml

Solo quiero una utilidad que pueda descargar los archivos jar y sus dependencias del Repositorio Maven sin imponer ninguna restricción sobre cómo se debe construir mi proyecto.

me gustaría algo como esto:

download-jar --dest=lib/ 'commons-io:commons-io:jar:1.4' 

Debe ser capaz de descargar también las dependencias.

Actualización:

no sabría sobre un pom.xml debe ser estructurado.

La única tarea que necesito realizar es la descarga de los frascos, me gustaría tener una herramienta que pueda realizar esta tarea que no me moleste con información superflua.

¿Hay algo como eso?

+0

no creo que esto es un duplicado, porque la pregunta que se hace referencia se refiere a ir a buscar deps al repositorio m2 local, mientras que esta pregunta especifica " sin imponer restricciones "con un ejemplo que muestra un destino personalizado (lib /). – Chris2048

+0

Estoy totalmente de acuerdo. Y la respuesta es: mvn -Dartifact=commons-io:commons-io:1.4:jar -DoutputDirectory=$(pwd) -Dpackaging=jar dependency:copy user1050755

+0

Orden de argumento mejorado: dependencia de mvn: copy -DoutputDirectory = $ (pwd) -Dartifact = commons-io: commons-io: 1.4: jar – user1050755

Respuesta

46

Si quiere descargar dependencias de Maven en el directorio lib utilizar el plugin de dependencia con la función copy-dependencies.

mvn -DoutputDirectory=./lib -DincludeArtifactIds=commons-logging,commons-io dependency:copy-dependencies 

Sin la pieza -DincludeArtifactIds, descargará todas las dependencias.

Si desea descargar un artefacto sin tener un proyecto específico * ver abajo **:

mvn -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 dependency:get 

Recursos:

Sobre el mismo tema:

comentarios interesantes:

  • * @ Pascal Thivent:

    No hay necesidad de configurar un POM, no hay necesidad de desarrollar su propia herramienta, el uso de dependencia mvn: conseguir.Esa es la respuesta correcta a esta pregunta.

+0

Gracias. Esto requiere tener un pom.xml apropiado. Esta es la idea que evitaría. ¿Conoces una forma de obtener el mismo resultado sin definir el pom? –

+0

Hacer un maven pom.xml adecuado y usarlo para descargar sus dependencias lleva unos 5 minutos. Configurar otro software y configurarlo para raspar la biblioteca y analizar POM.xmls para sus dependencias y descargar esas dependencias recursivamente tomará bastante más tiempo. –

+8

@Chris No es necesario configurar un POM, no es necesario desarrollar su propia herramienta, use 'mvn dependency: get'. –

0

Tenga una mirada en Ivy. Permite la resolución de dependencias de repositorios maven sin la excesiva complejidad de maven.

15

También tuve que especificar -DrepoUrl, después de recibir el mensaje de error:

Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get 
    (default-cli) on project standalone-pom: The parameters 'repositoryUrl' 
    for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get are 
    missing or invalid -> [Help 1] 

Así que aquí es el comando utilicé:

mvn -DgroupId=edu.umd -DartifactId=cloud9 -Dversion=1.3.5 \ 
    -DrepoUrl="http://repo1.maven.org/maven2" dependency:get 

AdemÃ, -Ddest=~ no funcionó. Siempre insistió en instalar el contenedor en ~/.m2/repository.

+0

¡GRACIAS! Esto fue súper útil para mí. No se necesita 'pom.xml';) – steve

+0

¿Qué pasa con el' \\ 'en el medio del comando? -_- –

+0

"\" permite copiar y pegar el comando en su terminal o script de shell. De lo contrario, las nuevas líneas activarían la ejecución de cada línea individualmente. Podría ser una línea larga, pero SO no usa 'white-space: pre-wrap', por desgracia, así que las líneas demasiado largas se cortan. – chbrown

5

Maven3 utiliza la dependencia plug-in versión 2.1 de forma predeterminada:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

Con Maven2 sigue siendo necesario escribir el nombre canónico:

$ mvn2 org.apache.maven.plugins:maven-dependency-plugin:2.1:get \ 
    -DrepoUrl=http://download.java.net/maven/2/ \ 
    -DgroupId=commons-io -DartifactId=commons-io -Dversion=1.4 

Uso de parámetros artifact para establecer el nombre del artefacto como grupo: artefacto: versión:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:1.4 

Uso LATEST para descargar la última versión del artefacto:

$ mvn dependency:get -DrepoUrl=http://download.java.net/maven/2/ \ 
    -Dartifact=commons-io:commons-io:LATEST 
+0

¿Qué pasa con el '\\' en el medio del comando? -_- –

+0

@IulianOnofrei nada relacionado con 'mvn' :) El carácter '\' se usa en bash para concatenar un comando que está dividido en dos o más líneas http://stackoverflow.com/questions/3871332/how-to- tell-bash-that-the-line-continúa-on-the-next-line –

+0

Veo, me molestó que no funcionaba hasta que me di cuenta de que tenía que eliminar eso, así que eso es un inconveniente para los usuarios de Windows sin experiencia :( –

Cuestiones relacionadas