SonarQube 3.7 с сеансом maven и Jenkins - Maven не объявляет проект верхнего уровня

контекст

в настоящее время у меня проблема с sonarqube 3.7, управляемым maven через jenkins

проект настроен как многомодульный проект maven, и Дженкинс запускает сонар (через maven), используя следующий параметр: "-pl "

я обновил "sonar" 3.6 до "sonarqube" 3.7, а также "sonar-maven-plugin" до 3.7

5 ответов


вы сталкиваетесь с тем, что многие из нас тяжелые пользователи SonarQube найти на регулярной основе:любой off-номинальные методы для вызова SonarQube будет перерыв во время некоторого возможного обновления. Мы настолько привыкли к этому на работе, что мы просто выпекаем время, чтобы исправить проблемы обновления в стоимость обновления SonarQube.

Я в этом не сомневаюсь -pl работала в прошлом. Но как SonarQube продолжает работать против много языки, он прольет свой корни как инструмент непрерывного контроля Java - и Maven-only.

SonarQube счастливее всего, когда вы вызываете его как простую Джейн mvn sonar:sonar. Вы должны указать дополнительную конфигурацию SonarQube в своем многомодульном Родительском POM, потому что это единственное гарантированное средство, с помощью которого измененная конфигурация будет соблюдаться сейчас и в будущем.

если вы просто хотите запустить SonarQube против одного модуля, набор sonar.includedModules включить только многомодульный родитель, а также цель модуль. Поэтому, если ваш многомодульный родитель <artifactId> is foo-parent и ваш желаемый модуль foo-module, вам нужно установить следующее свойство в foo-parentС пом:

sonar.includedModules=foo-parent,foo-module


SonarQube не поддерживает опцию Maven '-pl', см. http://jira.codehaus.org/browse/SONAR-1742


сонара.includedModules устарели с 4.3

https://docs.sonarqube.org/display/SONARQUBE53/Release+4.3+Upgrade+Notes

сонара.skippedModules и сонар.свойства includedModules устарели. Их следует заменить стандартами Maven advanced reactor options. Например, предположим, что у вас есть следующий многомодульный проект:

 org.mycompany:my-project
     - moduleA (org.mycompany:module-A)
     - moduleB (org.mycompany:module-B)
     - moduleC (org.mycompany:module-C)

затем

mvn sonar:sonar -Dsonar.skippedModules=module-B 

следует заменить (начиная с Maven 3.2.1) на

mvn sonar:sonar -pl !moduleB

у меня была та же проблема, когда я пытаюсь запустить сонар через команду :- sonar:sonar -pl moduleA где он искал Родительский модуль, поэтому я пробовал это и работал с: -sonar:sonar -pl .,moduleA. Это создаст только один конкретный проект в многомодульном проекте maven&, как мы указали "."это создало бы Родительский pom, который решил проблему.


Я знаю, что это немного старый вопрос, но что помогло мне в этом случае с помощью использовать обратную логику. Вместо передачи модулей, которые вы хотите выполнить анализ, вы должны передать модули,которые вы не хотите анализировать. Например, если у вас есть 4 модуля и вы просто хотите проанализировать третий, вы -pl вы выглядите так:

-pl !module1,!module2,!module4