请使用sonar.java.binaries提供项目的已编译类

Com*_*ple 28 maven jenkins sonarqube

我正在努力解决多模块项目的错误,结构很简单,它看起来像这样:

 root 
   module a
   module b
   module c
   pom.xml
Run Code Online (Sandbox Code Playgroud)

使用maven命令行后: clean sonar:sonar deploy

我是这个错误:

无法在项目X上执行目标org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar(default-cli):请使用sonar.java.binaries属性提供项目的已编译类 - > [帮助1]

编辑:这是我的结构 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>
Run Code Online (Sandbox Code Playgroud)

G. *_*eam 40

您以错误的顺序运行Maven步骤:

  • clean - 删除所有以前的构建输出
  • sonar:sonar - 运行分析(需要构建输出)
  • deploy - 建造等等......

试试这个:

mvn clean deploy sonar:sonar
Run Code Online (Sandbox Code Playgroud)

现在,如果你想要反对你不想实际"部署"jar,直到/除非更改的代码通过质量门,那么......需要不同的工作流程:

mvn clean package sonar:sonar
// check quality gate status
// if (qualityGateOk) { deploy }
Run Code Online (Sandbox Code Playgroud)

最后两个步骤的细节将取决于您的CI基础架构.但对于詹金斯来说,第二步是有据可查的

  • 通常``mvn clean package`就足以在之后做一个`sonar:sonar` ......而且安装并不是必需的.. (8认同)

Arp*_*wal 30

我在调用Standalone SonarQube Analysis作为Jenkins作业预构建步骤时遇到了同样的错误,我将其sonar.java.binaries=**/target/classes与其他SonarQube Analysis属性一起修复,如下所示:

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  
Run Code Online (Sandbox Code Playgroud)

  • 它对我有用......我只是改变了这个属性 sonar.java.binaries=./target/classes (4认同)

Raj*_*uka 6

我遇到了一个问题。我做了以下步骤添加了从构建步骤调用顶级maven目标(它应该是第一个构建步骤)添加了干净安装。

并将以下属性添加到“执行 SonarQube 扫描仪”下的“分析”属性中。

sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=target/classes
Run Code Online (Sandbox Code Playgroud)


che*_*cho 6

就我而言,适用于:

mvn clean install sonar:sonar -Dsonar.projectKey=groupId:artifactId -Dsonar.host.url=http://localhost:9000 -Dsonar.login=loginHASH -Dsonar.sources=src/main/java/ -Dsonar.java.binaries=target/classes
Run Code Online (Sandbox Code Playgroud)

改写:

mvn clean install sonar:sonar 
-Dsonar.projectKey=groupId:artifactId
-Dsonar.host.url=http://localhost:9000
-Dsonar.login=loginHASH
-Dsonar.sources=src/main/java/
-Dsonar.java.binaries=target/classes
Run Code Online (Sandbox Code Playgroud)