проверка изменений зависимости моментального снимка maven на сервере непрерывной интеграции

Существует плагин круиз-контроля, который проверяет изменения в зависимостях моментальных снимков и при необходимости запускает сборку. Это включает в себя использование встроенного модуля Maven для загрузки зависимостей, а затем проверку временных меток файлов моментальных снимков в локальном репозитории. Это работает нормально, но требует загрузки всех родителей и зависимостей для проверки некоторых временных меток.

Я работаю над распределенной системой CI (например, Bamboo/Buildforge) и хотел бы избежать загрузки всей иерархии зависимостей, чтобы проверить, требуется ли сборка. Можно определить дату сборки зависимости моментального снимка, проверив файл maven-metadata.xml в удаленном репозитории.

Существуют ли какие-либо плагины или инструменты для оптимизации этого процесса?


person Rich Seller    schedule 04.07.2009    source источник
comment
вы имеете в виду, что вы строите распределенную систему CI?   -  person Ken Liu    schedule 17.08.2009
comment
Нет, я использую Buildforge в качестве системы CI, каждая сборка может происходить на произвольном агенте, и я хочу избежать разрешения всей иерархии зависимостей Maven, чтобы определить, изменились ли какие-либо снимки. Информация для этого находится в файлах репозитория maven-metadata.xml. Я ищу инструменты, чтобы не обрабатывать эти файлы самостоятельно.   -  person Rich Seller    schedule 17.08.2009
comment
'например.' означает «например», поэтому исходный вопрос звучит так, будто вы работаете над чем-то похожим на Bamboo или Buildforge, а не специально используете эти инструменты.   -  person Michael Donohue    schedule 01.09.2009


Ответы (2)


Предполагая, что вы используете maven в качестве процесса сборки, вы хотите, чтобы плагин выполнял проверку и условную сборку.

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

Используйте плагин exec с «wget», чтобы получить файл maven-metadata.xml. Затем используйте подключаемый модуль xslt, чтобы преобразовать полученный XML в логическое значение, которое будет указывать, произошло ли обновление. Вам нужно указать XPath к узлу //metadata/versioning/lastUpdated и сравнить его с текущей датой и временем. Наконец, вам нужно будет изучить полученный преобразованный XML, чтобы определить, следует ли продолжать сборку.

Найдите эти плагины на странице http://mojo.codehaus.org/plugins.html.

person nont    schedule 05.08.2009
comment
Я знаю, что могу собрать все воедино, и так и есть. Я ищу библиотеку, утилиту или что-то, что избавляет от необходимости взлома - person Rich Seller; 05.08.2009

Похоже, Mercury обеспечивает более высокий уровень API, который я искал.

Mercury предоставляет независимый от реализации способ доступа к репозиториям на основе GAV, включая репозитории AV, такие как OSGi. Доступ OSGi еще не реализован. Под доступом я подразумеваю чтение артефактов и метаданных из репозиториев и запись артефактов в репозитории, метаданные обновляются при записи.

Все вызовы принимают набор запросов в качестве входных данных и возвращают объект, который скрывает getResults, который обычно представляет собой map‹ queryElement, Collection> response. Объект ответа имеет удобные методы hasExceptions(), hasResults(), getExceptions(), getResults().

Одним из ключевых строительных блоков является иерархия данных Artifact:

  • ArtifactCoordinates - is truly the 3 components GAV
    • ArtifactBasicMetadata - is coordinates plus type/classifier plus convenience methods like hash calculation and such
  • ArtifactMetadata добавляет список объектов зависимостей, захваченных как ArtifactBasicMetadata.
  • DefaultArtifact реализует интерфейс Artifact и добавляет pomBlob (byte[]) и файл, который указывает на фактический двоичный файл
person Rich Seller    schedule 12.09.2009