Просьба предоставить скомпилированные классы вашего проекта с помощью sonar.java.binaries
Я борюсь с ошибкой с проектом с несколькими модулями, struture прост, он выглядит так:
root
module a
module b
module c
pom.xml
После использования командной строки maven: clean sonar:sonar deploy
Я эта ошибка:
Не удалось выполнить цель org.sonarsource.scanner.maven: sonar-maven-plugin: 3.3.0.603: sonar (default-cli) в проекте X: Предоставьте скомпилированные классы вашего проекта со свойством sonar.java.binaries → [Справка 1]
EDIT: Вот структура моего 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">
<groupId>groupeId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<packaging>pom</packaging>
<name>${project.artifactId}-parent</name>
<description>description</description>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.3.0.603</version>
</plugin>
</plugins>
</build>
<modules>
<module>module a</module>
<module>module b</module>
<module>module c</module>
</modules>
</project>
Ответы
Ответ 1
Вы управляете шагами Maven в неправильном порядке:
-
clean
- удалить все предыдущие результаты сборки -
sonar:sonar
анализ sonar:sonar
- запуск (для которого требуется сборка) -
deploy
- build & etc...
Попробуйте это вместо этого:
mvn clean deploy sonar:sonar
Теперь, если вы собираетесь возразить, что вы не хотите "развернуть" банку до тех пор, пока/если измененный код не пройдет через Quality Gate, ну... это требует другого рабочего процесса:
mvn clean package sonar:sonar
// check quality gate status
// if (qualityGateOk) { deploy }
Детали этих двух последних шагов будут зависеть от вашей инфраструктуры CI. Но для Дженкинса шаг № 2 хорошо документирован
Ответ 2
Я получил ту же ошибку при вызове Standalone SonarQube Analysis в качестве этапа предварительной сборки задания Jenkins, который я исправил добавлением sonar.java.binaries=**/target/classes
вместе с другими свойствами анализа SonarQube следующим образом:
sonar.projectKey=TEST-PROJECT
sonar.projectName=TEST-PROJECT
sonar.projectVersion=1.0
sonar.sources=src/main/java/
sonar.language=java
sonar.java.binaries=**/target/classes
Ответ 3
Вы можете исправить это, передавая sonar.java.binaries инструментом maven.
mvn sonar: sonar -Dsonar.host.url = http://localhost: 9000 -Dsonar.login = faeef1e48b8d00290a0f3cc00021720baf1ca4dd -Dsonar.java.binaries = D:\aiwb_s **
Ответ 4
Для Java двоичные файлы находятся в целевой папке. Вот почему вы должны использовать mvn clean install sonar:sonar
чтобы убедиться, что ваш проект скомпилирован и находится в целевой папке.
Сонар сканирует ваши двоичные классы.