нет, вы не можете
#define identifier something
то, что вы определяете, должно быть идентификатором , который не может содержать пробел. Также он не может содержать дефис, начинаться с числа и т. Д., Вы можете определить только идентификатор
то, что вы написали, будет работать
#define replace to replacement here
, но не как вы ожидаете. Эта строка определила replace
для замены на to replacement here
hth.
Вы можете использовать плагин зависимостей 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
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
).
Команда:
mvn install:install-file
Обычно устанавливает артефакт в вашем локальном репозитории, поэтому вам не нужно его загружать. Однако, если вы хотите поделиться своим артефактом с другими, вам нужно будет развернуть артефакт в центральный репозиторий, чтобы узнать подробнее о плагине deploy .
Дополнительно добавьте на ваш POM автоматически выберет любые сторонние артефакты, которые вам нужны при создании вашего проекта. То есть Это загрузит артефакт из центрального репозитория.
Можно использовать зависимость: 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 за предоставление его https://stackoverflow.com/a/18632876/2509415 . Я добавляю еще один ответ)
один лайнер для загрузки последнего артефакта 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"
Вот что мне удалось скачать последнюю версию артефакта под названием «component.jar» с Maven 3.1.1 в конце (другие предложения не были сделаны, в основном из-за изменений версии maven, которые я считаю)
Это фактически загружает файл и копирует его в локальный рабочий каталог
From bash:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl
, я думаю, это подразумевалось от моего пом. Также я не использовал -Ddest
, поскольку на самом деле сделал i>, чтобы загрузить его в обычный каталог .m2
.
– yair
8 August 2015 в 22:58
dest
устарел и может быть заменен на invokation copy
после get
следующим образом: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.
(в этом случае размещение фляги в рабочем каталоге).
– Jacob Raihle
8 August 2016 в 15:26
:jar:sources
к артефакту , см. stackoverflow.com/a/31109185/537554 – ryenus 29 June 2015 в 06:42