Как настроить Maven для запуска анализа проекта SonarQube с двумя различными профилями качества?

мы запускаем анализ SonarQube для наших проектов Java через Maven. Maven как-то делает это автоматически; все, что мы сделали, это добавили sonar-maven-plugin нашим пом.в 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, как это (снова от пом.в XML):

<properties>
    <sonar.profile>MyQualityProfile1</sonar.profile>
    <sonar.branch>Dev_${sonar.profile}</sonar.branch>
    ...
</properties>

таким образом, мы получаем две записи проекта в пользовательском интерфейсе SonarQube, обе из которых содержат один и тот же код, но имеют разные проблемы в зависимости от их профиля качества (один используемый профиль качества 1, а другой используемый профиль качества 2).

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

вопрос: как я могу настройте maven, чтобы просто запустить sonar:sonar цель дважды с разными свойствами?

Это сэкономит нам много времени на наших сборках. Я уже нашел этот же вопрос, но пока нет ответов. Спасибо!

4 ответов


расширение предыдущего ответа, данного Eldad AK относительно профилей:

создайте два профиля 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 можно настроить необходимые профили качества.


комбинация maven и Ant может работать: используйте Maven для первого анализа сонара, как вы уже делаете, и используйте В Maven-Antrun Плагин для выполнения другой конфигурации SonarQube, определенной с помощью SonarQube Муравей Задача.


Я бы выбрал профили maven.
Каждый профиль будет иметь свои собственные свойства.

надеюсь, это поможет.