Как загрузить исходный код Java для артефакта Maven и его зависимостей из CLI (не в каталоге проекта)? - PullRequest
1 голос
/ 23 февраля 2012

Примечание: плагин maven-dependency-plugin здесь не подходит по причинам, указанным ниже

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

В основном я хотел бы сделать следующее:

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

Попытался объединить пару целей от мавена.-dependency-plugin, но, похоже, он не способен делать то, что мне нужно:

  • : unpack-dependencies требуется проект
  • : получить требует от меня явного указания удаленного репо.Почему он не может использовать их в моем файле settings.xml?

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

Буду признателен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 15 мая 2014

Лучшее, что я нашел, - это использование 3 команд maven:

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

Вот фрагмент кода bash:

#!/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=.
0 голосов
/ 24 февраля 2012

Apache ivy jar можно использовать как CLI-программу для загрузки артефактов Maven.

В следующем примере загружается ivy из Maven Central, а затем используется для загрузки jar источника commons-lang:

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]"
...