2016-04-05 2 views
5

У меня есть проект, состоящий из нескольких модулей.Maven SonarQube multi module

Я пытаюсь проанализировать их с помощью SonarQube.

Я включил плагин Sonar Maven в качестве зависимости в каждом модуле:

<dependency> 
    <groupId>org.codehaus.sonar</groupId> 
    <artifactId>sonar-maven-plugin</artifactId> 
    <version>5.1</version> 
</dependency> 

Тогда я бег Maven с помощью:

МВНЫХ чистого проверить гидролокатор: сонар

Maven завершает успешно, и я вижу, что анализ сонара происходит, однако, когда я открываю интерфейс Sonar, модули не видны в проектах.

Однако ...

Если я запускаю команду Maven из отдельного каталога модуля, он виден в проектах.

Почувствуйте, что мне не хватает чего-то очень простого, оцените любую помощь!

ответ

6

Вместо того, как зависимость, поставить sonar-maven-plugin в <build> части корня pom.xml следующим образом:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.sonarsource.scanner.maven</groupId> 
      <artifactId>sonar-maven-plugin</artifactId> 
      <version>3.0.1</version> 
     </plugin> 
    </plugins> 
</build> 

И поскольку это проект мульти-модуль, вы должны first perform an install from the root project and then run the sonar:sonar goal as a dedicated step следующим образом:

mvn clean install 
mvn sonar:sonar 

Для настройки URL sonarqube сервера, specify a project property of sonar.host.url в вашем settings.xml или pom.xml следующим образом:

<properties> 
    <!-- Optional URL to server. Default value is http://localhost:9000 --> 
    <sonar.host.url>http://myserver:9000</sonar.host.url> 
</properties> 
+0

Это похоже на работу. Мне нужно было удалить проекты Sonar, которые я создал при работе с отдельным модулем, но после этого я вижу, что проект создан. Также кажется, что v5.1 недоступен в качестве плагина, вместо этого мне пришлось использовать 2.7.1. Не эксперт Maven, так неуверенный, почему это ...? – timothyclifford

+1

Версия SonarQube Scanner для Maven не соответствует версиям сервера SonarQube. Пожалуйста, проверьте http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-HowtoFixVersionofMavenPlugin –

+0

@timothyclifford Как отметил Жюльен Х., плагин Maven имеет отдельное управление версиями из самого SonarQube. Я исправил ответ, чтобы иметь версию groupId/artifactId/version для последней версии плагина, совместимого с сервером SonarQube v5.1. – heenenee

0

SonarQube поддерживает многомодульные проекты, как это делает Maven. Это означает, что проект Maven, содержащий несколько модулей, отображает проект SonarQube, содержащий несколько модулей/компонентов, а не несколько проектов.

Возьмите SonarQube код, например (это Maven проект мульти-модуль): в parent project агрегатов вся информация из суб-модулей, а затем, если вы проверяете его structure (или его страницу code) вы можете увидеть список всех суб- (например: SonarQube::Core)

Суть в том, что вы видите ожидаемое поведение. Подмодули проекта Maven не предназначены для анализа в качестве проектов, вы всегда должны анализировать родительский проект, а SonarQube будет обрабатывать модули изначально.

+0

Николя, пожалуйста, объясните, почему отдельные отчеты о maven требуются, поскольку отчеты @heenenee? Потому что это противоречит интуиции и, кажется, противоречит тому, как обычно работает maven; например, не нужно запускать «mvn clean», а затем «mvn install» отдельно, может просто запустить «mvn clean install». Спасибо. – chrisinmtown