#maven #maven-3 #multi-module
#maven #maven-3 #многомодульный
Вопрос:
У меня есть проект с несколькими модулями maven. Мне нужно получить текущую версию модуля.
Parent Pom (2.4.0)
|- module1 1.5.0
|- module2 1.3.4
|- module3 1.2.5
Получить версию module2
вернет 1.3.4
.
К вашему сведению: module1
возможно, зависимость от module2
.
Найден один из способов сделать это
mvn depedency:tree -X | awk '/module1/ {split($0, a, ":"); if (a[4]) {print a[4]; exit}}'
Предпочел бы более чистый способ сделать это.
Ответ №1:
Есть несколько решений, но все они основаны на одной и той же логике:
mvn -f model2 org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout
С -f model2
помощью или -f model2/pom.xml
вы указываете путь к pom.xml
При org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate
этом вы вызываете цель оценки maven-help-plugin. Если у pom уже есть заблокированная версия этого плагина, вы можете просто использовать help:evaluate
При -Dexpression=project.version
этом вы указываете, что вы хотите знать. В случае, если он начинается с project, вы следуете структуре xml pom.
При -q
этом вы подавляете ведение журнала вывода, обрабатываемое структурой ведения журнала Maven.
Но это также привело бы к подавлению результата оценки цели. Следовательно, при использовании -DforceStdout
результат будет виден, поскольку он обходит структуру ведения журнала.
Комментарии:
1. Спасибо! это гораздо более чистый способ сделать это. Использовал это как пример bash, показанный на maven.apache.org/plugins/maven-help-plugin/evaluate-mojo.html чтобы присвоить переменной, затем либо повторите ее, либо используйте переменную дальше. Приветствия!