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