Возможно ли провести анализ сонара для всех детей, но НЕ для родителей в многомодульном проекте Maven? - PullRequest
1 голос
/ 14 апреля 2020

Мне любопытно, можно ли создавать и анализировать подмодули моего многомодульного проекта maven с помощью одной команды.

В настоящее время у меня есть один проект maven с тремя отдельными сервисами под ним. , Думайте об этом как о мелкомасштабном монорепо.

В настоящее время, когда я их создаю, я могу запустить один mvn clean install из самого верхнего проекта и получить полную сборку всего с четким анализом JaCoCo всех 3 сервисов. , В других проектах maven, где у меня уже есть только один сервис, я могу просто запустить mvn clean install sonar:sonar, но когда я запускаю его в своем многомодульном проекте, он выполняется только на самом верхнем уровне и анализирует все 3 сервиса как один проект в Sonar / SonarQube.

Этот ответ , кажется, указывает на то, что невозможно сделать то же самое для многомодульной сборки с помощью одной команды, но это также очень старый ответ, и с тех пор все могло измениться но с выключением codehaus я не думаю, что смогу легко найти эту проблему jira.

Также пытаюсь реализовать ответ на этот вопрос, используя pluginManagement и включив / отключив пропуск в родительских / дочерних модулях похоже, не работает, так как сонар видит, что родитель пропущен, а затем пропускает всех детей. Это может работать для exe c, но кажется, что sonar агрегирует / итерирует подмодули по-разному.

Следующее очевидное решение, обозначенное этими вопросами, и в некоторой степени сама документация Sonar после устаревания sonar.includeModules / sonar .excludeModules в 4.3 - использовать расширенные опции реактора Maven, однако это не работает для пропуска родительского проекта. Попытка запустить mvn sonar:sonar -pl one,two,three или наоборот mvn sonar:sonar -pl !. выдает ошибку:

Maven session does not declare a top level project

Кажется, что Maven ограничивается правильным списком модулей, но сам гидролокатор кажется несовместимым с подход и выдает ошибку в первом модуле.

Так что теперь, похоже, ответ заключается в том, что мне нужно запустить mvn sonar:sonar индивидуально один раз для каждого модуля в каталоге каждого модуля, что просто немного противно.

...