Please provide compiled classes of your project with sonar.java.binaries
Solution 1
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
Solution 2
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
Solution 3
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
Solution 4
I had the same problem but with BitBucket pipelines, so need to setup variables in bitbucket-pipelines.yml
- mvn compile
- pipe: sonarsource/sonarcloud-scan:1.1.0
variables:
EXTRA_ARGS: -Dsonar.java.binaries=\"target/classes\"
Solution 5
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.
Comments
-
CommonPeople almost 2 years
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 have 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>
-
khmarbaise over 6 yearsUsually a
mvn clean package
is enough to do asonar:sonar
afterwards...and install is not really necessary.. -
G. Ann - SonarSource Team over 6 yearsThx @khmarbaise. Updated
-
Line over 5 yearsactually, only compile is just fine - in my case tests take really long, so it was the best. and you don't need to add anything to pom.xml if you edit Maven settings
-
Gustavo Amaro almost 5 yearsIt's worked for me... I just changing this property sonar.java.binaries=./target/classes
-
Birendra Rawat almost 4 yearsWe can also assign full path sonar.java.binaries=/var/lib/jenkins/workspace/$JOB_NAME/target/classes