web-dev-qa-db-ja.com

sonar.Java.binariesでプロジェクトのコンパイル済みクラスを提供してください

私はマルチモジュールプロジェクトでエラーに苦しんでいます、構造は簡単です、それはこのように見えます:

 root 
   module a
   module b
   module c
   pom.xml

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>
25
CommonPeople

Mavenステップを間違った順序で実行しています:

  • clean-以前のビルド出力をすべて削除します
  • sonar:sonar-分析の実行(ビルド出力が必要)
  • deploy-ビルド&etc ...

代わりにこれを試してください:

mvn clean deploy sonar:sonar

変更されたコードがQuality Gateをパスするまで/しない限り、実際にjarを「デプロイ」したくないことに異議を唱えようとしている場合は、別のワークフローが必要です。

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

最後の2つのステップの詳細は、CIインフラストラクチャによって異なります。しかし、ジェンキンスの場合、ステップ#2は 十分に文書化されています

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  
27
Arpit

それを修正するには、mavenツールでsonar.Java.binariesを渡します。

mvn sonar:sonar -Dsonar.Host.url = http:// localhost:90 -Dsonar.login = faeef1e48b8d00290a0f3cc00021720baf1ca4dd -Dsonar.Java.binaries = D:\ aiwb_s **

0
SAN

Javaの場合、バイナリはターゲットフォルダにあります。そのため、mvn clean install sonar:sonarを使用して、プロジェクトがコンパイルされ、ターゲットフォルダー内にあることを確認する必要があります。

ソナーは、バイナリクラスをスキャンします。

0
Gene