2012-04-25 1 views
3

Я собираюсь написать инструмент, с помощью которого наши разработчики могут проверять источники артефакта, учитывая его координаты maven. Инструмент должен иметь возможность выборочно проверять источники рекурсивно для всех зависимостей SNAPSHOT.Как я могу проверить источники артефакта, учитывая его координаты в Maven?

Мой первый вопрос: нужно ли вообще писать этот инструмент? Можно себе представить, что это не очень уникальный пользовательский сценарий, но я пока не смог найти что-то подходящее для достижения этого. Я посмотрел на scm: checkout и scm: bootstrap, оба требуют знания о URL-адресе подключения, так как у меня есть только артефактID. Есть ли другой способ, но написать собственный инструмент, чтобы сделать это?

Если нет, мой самогон инструмент будет делать что-то в строках:

  1. Анализировать .m2/settings.xml, чтобы определить, какие Repo использовать Загрузить POM для артефакта.
  2. Создайте временную бутстрап-помю с помощью scm-тега из загруженной пом.
  3. Используйте scm: bootstrap и bootstrap-pom для проверки источников.
  4. [Необязательно] Поиск источников для помпов с зависимостями SNAPSHOT и повторение процесса.

Мой второй вопрос: будет ли это звучать как хороший способ сделать это для вас? Любые оговорки приходят в голову?

ответ

1

Для каждого проекта, который вы хотите проверить таким образом, вы можете добавить профиль, содержащий конфигурацию плагина для начальной загрузки плагина scm. Конфигурация плагина будет в том же POM, что и URL scm, так что дескрипторы # 2 & 3; вам не понадобится отдельный бутстрап-пом.

Для получения начального POM, вы могли бы использовать dependency:get из командной строки:

mvn dependency:get -Dartifact=some.group:my.artifact:version:pom -Ddestination=someDirectory 

В каталоге с скачанный POM, вы выполняете самозагрузки:

mvn -Pbootstrap-profile-id scm:bootstrap 

которые проверяют бы из проект верхнего уровня.

Я не знаю, как вы могли бы сделать это рекурсивно. Возможно, вы сможете использовать dependency:copy-dependencies с запросом транзитивных зависимостей и копирования POM, а затем запустить процесс начальной загрузки для каждого из них. Не уверен, как это сработает.

0

Решение user944849 не работает для меня, но вот пример, который работает

mvn dependency:get -Dartifact=ar.com.hjg:pngj:2.1.0:pom -Ddest=pom.xml 
mvn scm:bootstrap -Dgoals=validate 
mv target/checkout ~/projects/pngj 
+0

Если ПОМ не генерируется с помощью плагина релиз, ДМВ URL может указывать на голове вместо тега выпуска. Что может быть или не быть тем, что вы хотите. –