gpt4 book ai didi

java - Gradle Build - 任务 ':sonarqube' 的执行失败不能被索引两次

转载 作者:行者123 更新时间:2023-12-03 02:49:25 26 4
gpt4 key购买 nike

我在 Sonar 的 gradle 构建中收到错误“文件不能被索引两次”。我是否必须为 Sonar 添加任何包含/排除属性?非常感谢任何帮助。
如果我在 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 开箱即用的自定义任务引起的:

  • 任务 preclean删除可能太多了。使用 clean 反而。
  • 任务 jcompile编译基本上重复的主要 Java 源代码 compileJava . jar任务,默认情况下,已经依赖于 compileJava .

  • 我建议如下:
  • 删除 sourceSets配置,因为您遵循使用惯例 src/main/javasrc/test/java .
  • 删除自定义任务 precleanjcompile .
  • 清理您的构建脚本并删除空任务 copyClassescopyResources以及无操作分配 version=version .
  • 从那时起,如果您有自定义构建的要求,请尝试使用 Gradle 已经提供的功能。您可能想阅读 Building Java & JVM projects第一的。
  • 关于java - Gradle Build - 任务 ':sonarqube' 的执行失败不能被索引两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64456018/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com