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

Maven 请使用sonar.java.binaries提供项目的编译类,maven,jenkins,sonarqube,Maven,Jenkins,Sonarqube,我在一个多模块项目中遇到了一个错误,结构很简单,如下所示: root module a module b module c pom.xml 使用maven命令行后:cleansonar:sonar deploy 我有一个错误: 未能执行目标 org.sonarsource.scanner.maven:sonarmaven插件:3.3.0.603:sonar (默认cli)在project X上:请提供 带有sonar.java.binaries属性的项目->[帮助1

我在一个多模块项目中遇到了一个错误,结构很简单,如下所示:

 root 
   module a
   module b
   module c
   pom.xml
使用maven命令行后:
cleansonar:sonar deploy

我有一个错误:

未能执行目标 org.sonarsource.scanner.maven:sonarmaven插件:3.3.0.603:sonar (默认cli)在project X上:请提供 带有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>

群居区
人工的
版本
聚甲醛
${project.artifactId}-父级
描述
org.sonarsource.scanner.maven
声纳maven插件
3.3.0.603
模块a
模块b
模块c

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

  • clean
    -删除所有以前的生成输出
  • 声纳:声纳
    -运行分析(需要生成输出)
  • 部署
    -构建等
请尝试以下方法:

mvn clean deploy sonar:sonar
现在,如果您要反对您不想实际“部署”jar,直到/除非更改的代码通过质量门,那么。。。这需要不同的工作流:

mvn clean package sonar:sonar
// check quality gate status
// if (qualityGateOk) { deploy }

最后两个步骤的细节将取决于您的CI基础结构。但对于Jenkins来说,步骤2是我在调用独立SonarQube分析作为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  

您可以通过maven工具传递sonar.java.binaries来解决这个问题

mvn sonar:sonar-Dsonar.host.url= -Dsonar.login=faeef1e48b8d00290a0f3cc00021720baf1ca4dd-Dsonar.java.binaries=D:\aiwb\u s**


对于Java,二进制文件位于目标文件夹中。这就是为什么您应该使用
mvn clean install sonar:sonar
来确保您的项目已编译并位于目标文件夹中


声纳扫描你的二进制类

我有一个表面问题。我做了以下步骤 添加了从构建步骤调用顶级maven目标(它应该是第一个构建步骤) 添加了清洁安装

还将以下属性添加到“执行SonarQube扫描程序”下的分析属性中

sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=target/classes

这是一个父pom,具有“pom”包装。它不包含编译代码


您应该将move-sonar.maven.plugin放入编译代码的模块poms中。

我也有同样的问题,但与BitBucket管道有关,因此需要在
BitBucket管道中设置变量。yml

-mvn编译
-管道:声纳源/声纳云扫描:1.1.0
变量:
额外参数:-Dsonar.java.binaries=\“目标/类”
在我的案例中,可用于:


添加您的pom.xml请提供详细的结构和pom。您好,我添加了我的根目录的pom.xml,这是一个非常简单的版本通常一个
mvn干净的包
就足以完成一个
sonar:sonar
之后…安装并不是真的必要..Thx@khmarbaise。实际上,只有编译是可以的——在我的例子中,测试需要很长时间,所以这是最好的。如果你编辑Maven设置,你不需要在pom.xml中添加任何内容。这对我来说很有用。。。我只是更改了这个属性sonar.java.binaries=./target/classes我们还可以分配完整路径sonar.java.binaries=/var/lib/jenkins/workspace/$JOB\u NAME/target/classes
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