Please provide compiled classes of your project with sonar.java.binaries

117,886

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.

Share:
117,886
CommonPeople
Author by

CommonPeople

France, 20 yo, common people.

Updated on July 09, 2022

Comments

  • CommonPeople
    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
    khmarbaise over 6 years
    Usually a mvn clean package is enough to do a sonar:sonar afterwards...and install is not really necessary..
  • G. Ann - SonarSource Team
    G. Ann - SonarSource Team over 6 years
    Thx @khmarbaise. Updated
  • Line
    Line over 5 years
    actually, 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
    Gustavo Amaro almost 5 years
    It's worked for me... I just changing this property sonar.java.binaries=./target/classes
  • Birendra Rawat
    Birendra Rawat almost 4 years
    We can also assign full path sonar.java.binaries=/var/lib/jenkins/workspace/$JOB_NAME/tar‌​get/classes