Поведение sonar-maven-plugin меняется, когда maven-compiler-plugin
определено/не определено. Я потратил некоторое время, чтобы узнать правильную настройку.
Создайте простой проект Java maven и сохраните простоту pom.xml
.
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>testing</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
Исполнение
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:<version>:sonar -Dsonar.login=<token>
Случай 1:
sonarqube-maven-plugin
версия: 3.7.0.1746
pom.xml
с maven.compiler.release
определено.
maven-compiler-plugin
НЕ определяется в pom.xml
Результат:
Configured Java source version (sonar.java.source): 5
Случай 2:
sonarqube-maven-plugin
версия: 3.7.0.1746
pom.xml
с maven.compiler.release
определенным
pom.xml
с maven.compiler.source
определенным
maven-compiler-plugin
НЕ определяется в pom.xml
Результат:
(Это означает, что плагин может получить версию только из source
вместо release
)
Configured Java source version (sonar.java.source): 17
Случай 3:
sonarqube-maven-plugin
версия: 3.7.0.1746
pom.xml
с maven.compiler.release
определенным
maven-compiler-plugin
(3.8.1) определяется
Результат:
(Понятия не имею, почему версия меняется, когда определяется подключаемый модуль компилятора maven.)
Configured Java source version (sonar.java.source): 6
Случай 4:
sonarqube-maven-plugin
версия: 3.7.0.1746
pom.xml
с maven.compiler.release
определенным
maven-compiler-plugin
(3.10.1) определяется
Результат:
(Не знаю, почему версия меняется, когда определена другая версия плагина компилятора maven.)
Configured Java source version (sonar.java.source): 7
Случай 5:
sonarqube-maven-plugin
версия: 3.9.1.2184
pom.xml
с maven.compiler.release
определенным
maven-compiler-plugin
НЕ определяется в pom.xml
Результат:
(Обновление плагина sonar maven не помогает.)
Configured Java source version (sonar.java.source): 5
Правильная настройка
sonarqube-maven-plugin
с версией 3.8.0
или выше.
Определите maven-compiler-plugin
в pom.xml
с версией 3.6.0
или выше.
Исполнение:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar -Dsonar.login=<token>
pom.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>testing</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
</plugins>
</build>
</project>