Подтвердить что ты не робот

Как настроить 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 с разными свойствами?

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

4b9b3361

Ответ 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.
Каждый профиль будет иметь свои собственные свойства.

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