7 ответов:
вы могли бы использовать плагин зависимости maven, который имеет хороший
dependency:getцель, начиная с версии 2.1. Нет необходимости в pom, все происходит в командной строке.чтобы убедиться, что найти
dependency:getцель, вам нужно явно сказать maven использовать версию 2.1, т. е. вам нужно использовать полное имя плагина, включая версию:mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \ -DrepoUrl=url \ -Dartifact=groupId:artifactId:versionобновление: С более старыми версиями Maven (до 2.1), можно запустить
dependency:getобычно (без использования полного имени и версии), заставляя вашу копию maven использовать данную версию плагина.это можно сделать следующим образом:
1. Добавьте следующую строку в поле
<settings>элемент~/.m2/settings.xmlfile:<usePluginRegistry>true</usePluginRegistry>2. Добавьте файл
~/.m2/plugin-registry.xmlследующего содержания:<?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>но это, кажется, больше не работает с maven 2.1 / 2.2. На самом деле, согласно введение в реестр плагин черт
plugin-registry.xmlбыли переработаны (для переносимости) и реестр плагинов в настоящее время находится в полу-спящем состоянии в Maven 2. Поэтому я думаю, что сейчас мы должны использовать длинное имя (при использовании плагина без pom, что является идеейdependency:get).
С последней версией (2.8)Плагин Зависимости Maven, загрузка артефакта из центрального репозитория Maven так же просто, как:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]здесь
groupId:artifactId:versionи т. д. это координаты Mavenпример, протестированный с Maven 2.0.9, Maven 2.2.1 и 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(спасибо Паскаль Thivent для обеспечения его замечательный ответ в первую очередь. Я добавляю еще один ответ, потому что это не поместилось бы в комментарии, и это было бы слишком обширно для редактирования.)
вот что сработало для меня, чтобы загрузить последнюю версию артефакта под названием " компонент.jar " с Maven 3.1.1 в конце концов (другие предложения не сделали, в основном из-за изменений версии maven я считаю)
это фактически загружает файл и копирует его в локальный рабочий каталог
от bash:
mvn dependency:get \ -DrepoUrl=http://.../ \ -Dartifact=com.foo.something:component:LATEST:jar \ -Dtransitive=false \ -Ddest=component.jar \
относительно того, как получить двоичный артефакт,Паскаль Thivent это это так, но чтобы также получить источник артефакта jar, мы можем использовать:
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sourcesнапример
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sourcesэто работает, потому что
artifactпараметр на самом деле состоит изgroupId:artifactId:version[:packaging][:classifier]. Просто упаковка и классификатор необязательны.С
jarкак упаковка иsourcesкак классификатор, плагин зависимости maven понимает, что мы просим jar источников, а не jar артефактов.к сожалению, на данный момент исходные файлы jar не могут быть загружены транзитивно, что имеет смысл, но в идеале я считаю, что он также может уважать опцию
downloadSourcesтак же, как плагин Maven eclipse делает.
один лайнер для загрузки последнего артефакта maven без 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"
можно использовать зависимость: copy (http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html), который берет список артефактов, определенных в разделе конфигурации плагина, и копирует их в указанное место, переименовывая их или удаляя версию, если это необходимо. Эта цель может разрешить артефакты из удаленных репозиториев, если они не существуют ни в локальном репозитории, ни в реакторе.
Не все свойства плагина могут быть использованы в Мэйвен кли. Можно указать свойства, которые имеют свойство "User Property:". В приведенном ниже примере я загружаю junit в свою временную папку и удаляю vesion из файла jar.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=trueгде артефакт=junit: junit: 4.11-это координаты maven. А вы укажите artifcat как идентификатор_группы:ИД артефакта:версия[:упаковки[:классификатор]]
(спасибо Паскаль Thivent для обеспечения его https://stackoverflow.com/a/18632876/2509415 в первое место. Я добавляю еще один ответ)
команды:
mvn install:install-fileобычно установка артефакт в вашем локальном репозитории, поэтому вам не нужно его загружать. Однако, если вы хотите поделиться своим артефактом с другими, вам нужно будет развернуть артефакт в центральный репозиторий см. развертывать плагин для более подробной информации.
дополнительно добавлять зависимость в ваш POM автоматически будут загружаться любые сторонние артефакты, которые вам нужны при создании вашего проект. Т. е. это позволит загрузить артефакт из центрального хранилища.
Comments