прежде всего извините за длинный заголовок. Я работаю над мультимодульным проектом 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 не поддерживает несколько обновлений версии, поэтому это, вероятно, не вариант.
Все самое лучшее.
Спасибо за ответ. Я спросил руководителя проекта о версии, и он говорит, что модули фактически выпущены отдельно, и именно поэтому они хотят, чтобы у них были разные номера версий. – furkee
Если они выпущены отдельно, это означает, что сборка нескольких модулей не имеет смысла ... – khmarbaise