Как настроить Maven для запуска анализа проекта SonarQube с двумя различными профилями качества?
Мы запускаем анализ SonarQube для наших проектов Java через Maven. Maven как-то делает это автоматически; все, что мы сделали, это добавить sonar-maven-plugin
в наш pom.xml:
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
Это отлично работает.
Но теперь нам нужно дважды выполнить анализ SonarQube с разными профилями качества. Поскольку вы не можете легко сменить ключ проекта от Maven, мы используем свойство SonarQube branch
для дифференциации проектов SonarQube, как это (снова из pom.xml):
<properties>
<sonar.profile>MyQualityProfile1</sonar.profile>
<sonar.branch>Dev_${sonar.profile}</sonar.branch>
...
</properties>
Таким образом, мы получаем две записи проекта в пользовательском интерфейсе SonarQube, оба из которых содержат точный код, но имеют разные проблемы в зависимости от их профиля качества (один используется профиль качества 1, а другой используемый профиль качества 2).
Проблема: для этого я должен вручную изменить свойства pom.xml и выполнить всю сборку дважды.
Вопрос: Как настроить maven для простого запуска цели sonar:sonar
с разными свойствами?
Это сэкономит нам много времени на наших сборках. Я уже нашел этот похожий вопрос, но ответов пока нет. Спасибо!
Ответы
Ответ 1
Развернувшись на предыдущем ответе, предоставленном Эльдадом АК относительно профилей:
Создайте два профиля maven следующим образом:
<properties>
<sonar.branch>Dev_${sonar.profile}</sonar.branch>
</properties>
<profiles>
<profile>
<id>QualityProfileOne</id>
<properties>
<sonar.profile>MyQualityProfile1</sonar.profile>
</properties>
</profile>
<profile>
<id>QualityProfileTwo</id>
<properties>
<sonar.profile>MyQualityProfile2</sonar.profile>
</properties>
</profile>
</profile>
Затем запустите следующее:
$ mvn clean install -DskipTests
$ mvn sonar:sonar -PQualityProfileOne
$ mvn sonar:sonar -PQualityProfileTwo
(вам может потребоваться выполнить очистку между работающим сонаром, не уверен)
Ответ 2
Попробуйте настроить два исполнения вашего плагина. Что-то вроде этого:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<executions>
<execution>
<id>s1</id>
<phase>verify</phase>
<goals>
<goal>sonar</goal>
</goals>
<configuration>
<sonar.branch>MyQualityProfile1</sonar.branch>
</configuration>
</execution>
<execution>
<id>s2</id>
<phase>install</phase>
<goals>
<goal>sonar</goal>
</goals>
<configuration>
<sonar.branch>MyQualityProfile2</sonar.branch>
</configuration>
</execution>
</executions>
</plugin>
Это запустит два исполнения гидролокатора по этапам проверки и установки, каждый с другим значением sonar.branch. В Sonar вы можете настроить необходимые профили качества после первого анализа.
Ответ 3
Может работать комбинация maven и Ant: используйте Maven для первого анализа сонара, как вы уже это сделали, и используйте Maven Antrun Plugin для выполнения другой конфигурации SonarQube, определенной с помощью SonarQube Ant Задача.
Ответ 4
Я бы выбрал профили maven.
Каждый профиль будет иметь свои собственные свойства.
Надеюсь, это поможет.