2016-08-09 2 views
1

прежде всего извините за длинный заголовок. Я работаю над мультимодульным проектом maven. Сейчас проект имеет только 1 версию, то есть родительскую версию. Кроме того, установка «mvn install» занимает много времени, поскольку все модули установлены один за другим. Моя цель - установить только те модули, которые были изменены, и те, которые зависят от него. И затем я хочу изменить версии модулей, которые являются свойствами в родительском pom-, которые изменены.Установка только измененных модулей в проект maven и обновление только версии измененных версий модулей

До сих пор я получаю измененные файлы с помощью следующих команд (моя цель состоит в том, чтобы взять совершить идентификатор через командную строку вместо того, чтобы дифф относительно головы, но для целей развития, HEAD штрафа):

git diff HEAD | grep '^diff --git [A-Za-z0-9 ]*' | cut -d ' ' -f 3 | cut -c 3- 

, который получает относительные пути (в соответствии с родительским каталогом проекта) измененных файлов. С этой информацией я обнаруживаю измененные модули, меняю их версии в родительском файле pom.xml (они установлены как свойство в родительском pom)

В качестве побочного примечания я делаю все это через скрипт bash python.

Я хочу установить измененные узелки с помощью команды:

mvn -pl module1,module2.. -amd install 

То, что я не могу решить прямо сейчас является то, что для некоторых модулей, -pl команда не будет работать, потому что я получаю следующее сообщение об ошибке:

Failed to execute goal on project bla-bla: Could not resolve dependencies for project com.xyz.bla:bla-bla:jar:2.10.0: 

Когда я выполнил выше команды с протоколированием отладки включен, я понял, что проблема, вероятно, Maven не оценивая родительский POM и, таким образом, не понимая:

com.xyz.bla:bla-some_other_bla:${bla-someother-bla-version} 

означает, что он не может разрешить свойство версии на дочернем пом, поэтому не может найти jar в локальном репозитории и не сможет выполнить установку.

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

Примечания:

  • Я попытался использовать https://github.com/nwiechmann/scm-changes-maven-extension но не удалось чтобы заставить его работать.

  • mvn: релиз плагина: updateversions не поддерживает несколько обновлений версии, поэтому это, вероятно, не вариант.

Все самое лучшее.

ответ

0

Идея создания нескольких модулей имеет только один номер версии для всех модулей, поскольку все модули будут выпущены в одно и то же время.

Вы можете улучшить это и создать только те модули, которые изменились, что может быть достигнуто с помощью this. А также this might help, в частности, для свойства, которое может использоваться как номер версии.

+0

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

+0

Если они выпущены отдельно, это означает, что сборка нескольких модулей не имеет смысла ... – khmarbaise

Смежные вопросы