zte tutorial descarga maven-2

maven-2 - descarga - maven tutorial



¿Cómo puedo descargar un artefacto Maven específico en una línea de comando? (7)

Puedo instalar un artefacto por instalación: instalar-archivo, pero ¿cómo puedo descargarlo, por ejemplo:

mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST

¿alguna idea?


Con la última versión (2.8) del Complemento Dependency de Maven , la descarga de un artefacto del Repositorio Central de Maven es tan simple como:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]

donde groupId:artifactId:version , etc. son las coordenadas de Maven

Un ejemplo, probado con Maven 2.0.9, Maven 2.2.1 y Maven 3.0.4:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources

(Gracias a Pascal Thivent por brindarme su maravillosa respuesta en primer lugar. Estoy agregando otra respuesta, porque no encajaría en un comentario y sería demasiado extensa para una edición).


El comando:

mvn install:install-file

Por lo general, installs el artefacto en su repositorio local, por lo que no debería necesitar descargarlo. Sin embargo, si desea compartir su artefacto con otros, deberá desplegar el artefacto en un repositorio central; consulte el complemento de implementación para obtener más detalles.

Además, al agregar una dependency a su POM, se buscarán automáticamente los artefactos de terceros que necesite al construir su proyecto. Es decir, esto descargará el artefacto del repositorio central.


En cuanto a cómo obtener el artefacto binario, la respuesta de Pascal Thivent lo es, pero para obtener también el jarrón de fuentes de artefactos, podemos usar:

mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources

p.ej

mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources

Esto funciona porque el parámetro artifact realidad consiste en groupId:artifactId:version[:packaging][:classifier] . Solo el empaque y el clasificador son opcionales.

Con jar como empaquetamiento y sources como clasificador , el complemento de dependencia maven entiende que estamos pidiendo el contenedor de fuentes, no el contenedor de artefactos.

Desafortunadamente, por ahora, los archivos jar no se pueden descargar de forma transitiva, lo cual tiene sentido, pero idealmente creo que también puede respetar la opción downloadSources tal como lo hace el plugin maven eclipse.


Esto es lo que funcionó para mí para descargar la última versión de un artefacto llamado "component.jar" con Maven 3.1.1 al final (otras sugerencias no, principalmente debido a los cambios de versión de Maven, creo)

Esto realmente descarga el archivo y lo copia en el directorio de trabajo local

De bash:

mvn dependency:get / -DrepoUrl=http://.../ / -Dartifact=com.foo.something:component:LATEST:jar / -Dtransitive=false / -Ddest=component.jar /


Podría usar el complemento de dependencia maven que tiene una buena dependency:get objetivo desde la versión 2.1. No hay necesidad de un pom, todo sucede en la línea de comando.

Para asegurarse de encontrar la dependency:get objetivo, debe indicar explícitamente a maven que use la versión 2.1, es decir, debe usar el nombre completo del complemento, incluida la versión:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get / -DrepoUrl=url / -Dartifact=groupId:artifactId:version

ACTUALIZACIÓN: con versiones anteriores de Maven (anteriores a 2.1), es posible ejecutar la dependency:get normalmente (sin utilizar el nombre completo y la versión) forzando a su copia de maven a usar una versión dada de un complemento.

Esto puede hacerse de la siguiente manera:

1. Agregue la siguiente línea dentro del elemento <settings> de su archivo ~/.m2/settings.xml :

<usePluginRegistry>true</usePluginRegistry>

2. Agregue el archivo ~/.m2/plugin-registry.xml con los siguientes contenidos:

<?xml version="1.0" encoding="UTF-8"?> <pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd" xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <useVersion>2.1</useVersion> <rejectedVersions/> </plugin> </plugins> </pluginRegistry>

Pero esto parece no funcionar más con maven 2.1 / 2.2. De hecho, de acuerdo con el Registro de Introducción al Plugin , las características del plugin-registry.xml han sido rediseñadas (para la portabilidad) y el registro de plugins se encuentra actualmente en un estado semi-latente dentro de Maven 2 . Así que creo que tenemos que usar el nombre largo por ahora (cuando se usa el complemento sin un pom, que es la idea detrás de la dependency:get ).


Se podría usar la dependencia: copy ( copy ) que toma una lista de los artefactos definidos en la sección de configuración del complemento y los copia en una ubicación especificada , cambiarles el nombre o eliminar la versión si lo desea. Este objetivo puede resolver los artefactos de repositorios remotos si no existen en el repositorio local o en el reactor.

No todas las propiedades del complemento se pueden usar en maven CLI. Se podrían especificar las propiedades que tienen definida la propiedad "Propiedad del usuario:". En el ejemplo siguiente, estoy descargando junit en mi carpeta temporal y eliminando la vesion del archivo jar.

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true

donde artefacto = junit: junit: 4.11 son las coordenadas maven. Y especifica artifcat como groupId: artifactId: version [: packaging [: clasificador]]

(Gracias a Pascal Thivent por proporcionarme su https://.com/a/18632876/2509415 en primer lugar. Estoy agregando otra respuesta)


un trazador de líneas para descargar el último artefacto experto sin mvn:

curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"