I am struggling with an error with a multi-modules project, the struture is simple, it looks like this :
root
module a
module b
module c
pom.xml
After using the maven command line : clean sonar:sonar deploy
I am this error :
Failed to execute goal
org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar
(default-cli) on project X : Please provide compiled classes of your
project with sonar.java.binaries property -> [Help 1]
EDIT : Here is the structure of my 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>
You're running your Maven steps in the wrong order:
clean
- delete all previous build output
sonar:sonar
- run analysis (which requires build output)
deploy
- build &etc...
Try this instead:
mvn clean deploy sonar:sonar
Now if you're about to object that you don't want to actually "deploy" the jar until/unless the changed code passes the Quality Gate, well... that requires a different workflow:
mvn clean package sonar:sonar
// check quality gate status
// if (qualityGateOk) { deploy }
The particulars of those last two steps will depend on your CI infrastructure. But for Jenkins, step #2 is well documented
I got the same error while invoking Standalone SonarQube Analysis as a Jenkins job pre-build step, which I fixed adding sonar.java.binaries=**/target/classes
along with other SonarQube Analysis properties, as follows:
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
I had a seme problem. I did below steps
Added Invoke top-level maven target from build steps (It should be the first build step)
added clean install.
and also added below properties to my Analysis properties under Execute SonarQube scanner.
sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=target/classes
You can fix that by passing sonar.java.binaries by maven tool.
mvn sonar:sonar -Dsonar.host.url=http://localhost:9000
-Dsonar.login=faeef1e48b8d00290a0f3cc00021720baf1ca4dd -Dsonar.java.binaries=D:\aiwb_s**
For Java, the binaries are in the target folder. That's why you should use mvn clean install sonar:sonar
to make sure your project is compiled and inside the target folder.
Sonar scans your binary classes.
This is a parent pom and has "pom" packaging. It doesn't contain compiled code.
You should put move the sonar.maven.plugin to the module poms that compile code.