簡體   English   中英

Gradle Build - 任務 ':sonarqube' 的執行失敗不能被索引兩次

[英]Gradle Build - Execution failed for task ':sonarqube' can't be indexed twice

我在聲納的 gradle 構建中收到錯誤“文件不能被索引兩次”。 我是否必須為聲納添加任何包含/排除屬性? 非常感謝任何幫助。

如果我在 sourceSets 下的 test 中取出“src/main/java”,我會收到 junit 測試用例的編譯錯誤。

這是我的 build.gradle 文件內容的樣子,

group = 'groupid'
apply plugin: 'gradleFortify'
apply plugin: 'org.sonarqube'
apply plugin: 'eclipse'
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'groovy'
//apply plugin: "java-library-distribution"
//apply plugin: 'distribution'

version=version
sourceCompatibility = 1.8


repositories {
        maven {
        url "artifactory"
            credentials {
            }
        }
        sonarqube {
            properties {
                property 'sonar.sourceEncoding', 'UTF-8'
                property "sonar.exclusions", ["**/*Test.java"]
            }
        }
}

buildscript {
    repositories {
        maven {
        url "artifactory"
            credentials {
            }
        }
    dependencies {
        classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.9.7' 
        classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0'
        
    }
}

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
    }
    test {
        java.srcDirs = ['src/test/java','src/main/java']
    }
}

dependencies{


}
 task preclean(type: Delete) {
     delete 'build'
 } 
 task jcompile(type: JavaCompile) {
     dependsOn preclean
     source = fileTree(dir: 'src/main/java', include: '**/*.java')
     destinationDir = file('build/classes')
     sourceCompatibility = '1.8'
     targetCompatibility = '1.8'
     classpath = configurations.runtime
 }
 

 task copyResources( type: Copy ) { 
 }

 task copyClasses( type: Copy ) {
 }
 
 
 jar {
    dependsOn jcompile
    archiveName = 'prj1.jar'
    manifest {
        attributes('Implementation-Title': project.name,
                   'Implementation-Version': project.version)
    }
     into('lib') {
         println "includeInJar: " + configurations.runtime.collect { File file -> file }
         from configurations.runtime
     }
 }
// jar.finalizedBy(jarTask) { }
 
 
sonarqube {
    properties {
        property "sonar.projectName", "prj-${version}"
        property "sonar.projectKey", "prj-${version}"
    }
}

test {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}
jacocoTestReport {
    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it, includes: ['com/**'])
        })
    }
}

所描述的問題很可能是由 Gradle 開箱即用的自定義任務引起的:

我建議如下:

  1. 刪除sourceSets配置,因為您遵循使用src/main/javasrc/test/java的約定。
  2. 刪除自定義任務precleanjcompile
  3. 清理您的構建腳本並刪除空任務copyClassescopyResources以及無操作分配version=version
  4. 從那時起,如果您有自定義構建的要求,請嘗試使用 Gradle 已經提供的功能。 您可能想先閱讀構建 Java 和 JVM 項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM