2012-02-23 4 views
1

Примечание: Maven-зависимость-плагин не подходит здесь по причинам, указанным нижеКак загрузить источник Java для артефакта Maven и его зависимостей от CLI (не в каталоге проекта)?

Я развертывание проектов по Artifactory с источниками прилагается. Я хотел бы иметь возможность запускать команду для загрузки и распаковки источников для данного артефакта и его зависимостей. Я буду использовать это, чтобы сравнить две версии артефакта.

То, что я хотел бы сделать, это в основном это:

mvn extract:sources -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version] 

Пытались комбинируя несколько целей из Maven-зависимостей-плагин, но это, кажется, не способен делать то, что мне нужно:

  • : распаковка-зависимости требует проект
  • : получить требует от меня, чтобы явно указать удаленный репозиторий. Почему он не может использовать их в моих настройках. Xml?

Я попытался написать свой собственный mojo, чтобы сделать это, но я потерял сознание, потому что я не могу получить дескриптор удаленных репозиториев, если я не в директории проекта. Таким образом, я не могу загрузить проект. И даже после того, как я скачал проект, mojo уже инициализировал его $ {project}, поэтому я не смогу получить его зависимости и т. Д.

Поблагодарите вашу помощь.

ответ

0

Аппа-плющ может использоваться как CLI program для скачивания артефактов Maven.

Следующий пример загрузки плющ из Maven Central, а затем использует его для загрузки исходного баночку Обще-Ланг:

wget -O ivy.jar \ 
    http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar 

java -jar ivy.jar \ 
    -dependency commons-lang commons-lang 2.6 \ 
    -confs sources \ 
    -retrieve "[artifact](-[classifier]).[ext]" 
+0

Спасибо, это удобно, хотя с тех пор задавая вопрос, который я начал писать плагин Maven делать то, что мне нужно. Поделитесь ссылкой на github и разместите ссылку здесь. –

0

Лучшее, что я нашел в том, чтобы использовать 3 Maven команды:

  • один что получите ваш артефакт
  • тот, который получает ваш артефакт pom
  • и тот, который извлекает его зависимости, используя свой pom

Вот Баш фрагмент:

#!/bin/bash 

DIR=some/dir 
ARTEFACT_ID=your-artefact 
GROUP_ID=com.your.group.id 
VERSION=1.7 
ARTEFACT=${GROUP_ID}:${ARTEFACT_ID}:${VERSION} 

rm -fR $DIR 

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy \ 
    -Dartifact=$ARTEFACT \ 
    -DoutputDirectory=$DIR 

# now get the pom: it will be needed by the copy-dependencies goal 
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy \ 
    -Dartifact=$ARTEFACT:pom \ 
    -DoutputDirectory=$DIR 

mvn -f ${DIR}/${ARTEFACT_ID}-${VERSION}.pom org.apache.maven.plugins:maven-dependency- plugin:2.8:copy-dependencies \ 
    -DoutputDirectory=.