Я могу установить артефакт путем install:install-file
, но как я могу загрузить артефакт?
Например:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Я могу установить артефакт путем install:install-file
, но как я могу загрузить артефакт?
Например:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
Вы можете использовать плагин зависимостей maven, который имеет приятный dependency:get
с версии 2.1. Нет необходимости в помпе, все происходит в командной строке.
Чтобы найти цель dependency:get
, вам нужно явно указать maven для использования версии 2.1, то есть вам нужно использовать полное имя плагина, включая версию:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
UPDATE:. В более старых версиях Maven (до версии 2.1) можно нормально запускать dependency:get
(без использования полного имени и версии), заставляя вашу копию maven использовать данная версия плагина.
Это можно сделать следующим образом:
1. Добавьте следующую строку в элемент <settings>
вашего файла ~/.m2/settings.xml
:
<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 Dependency Plugin загрузка артефакта из Центрального репозитория 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
(Спасибо Pascal Thivent за то, что он предоставил ему замечательный ответ. Я добавляю еще один ответ, потому что он не вписывается в комментарий, и он слишком обширны для редактирования.)
Вот то, что сработало для меня, чтобы загрузить последнюю версию артефакта под названием "component.jar" с Maven 3.1.1 в конце (другие предложения не были сделаны, в основном из-за изменений версии maven, которые я считаю)
Это фактически загружает файл и копирует его в локальный рабочий каталог
От bash:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
Что касается того, как получить двоичный файл артефакта, Pascal Thivent отвечает, но, чтобы получить артефактные источники, мы можем использовать:
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 не могут быть загружены транзитивно, что имеет смысл, но в идеале я верю, что он также может уважать вариант 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), которая принимает список артефактов, определенных в разделе конфигурации плагина, и копирует их в указанное место, переименование или удаление версии, если это необходимо. Эта цель может разрешить артефакты из удаленных репозиториев, если они не существуют ни в местном репозитории, ни в реакторе.
Не все свойства плагина могут использоваться в CLI maven. Можно указать свойства, которые имеют свойство "Свойство пользователя:". В приведенном ниже примере я загружаю junit в свою временную папку и удаляю vesion из файла jar.
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
где artifact = junit: junit: 4.11 - координаты maven. И вы указываете artifcat как groupId: artifactId: version [: packaging [: classifier]]
(Спасибо Pascal Thivent за предоставление его fooobar.com/questions/55365/.... Я добавляю еще один ответ)
Команда:
mvn install:install-file
Обычно устанавливает артефакт в вашем локальном репозитории, поэтому вам не нужно его загружать. Однако, если вы хотите поделиться своим артефактом с другими, вам нужно будет развернуть артефакт в центральный репозиторий, чтобы узнать больше о развернуть плагин.
Кроме того, добавив dependency к вашему POM, вы автоматически получите любые артефакты сторонних производителей, которые вам нужны при создании вашего проекта. То есть Это загрузит артефакт из центрального репозитория.
Вот пример получения ASM-7 с использованием Maven 3.6:
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
Или вы можете скачать банку отсюда: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm, а затем
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar
LATEST
устарел, попробуйте с диапазоном [,)
./mvnw org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
-DremoteRepositories=repoId::default::https://nexus/repository/maven-releases/ \
"-Dartifact=com.acme:foo:[,)"