在gradle 5上运行声纳曲时我遇到错误,我得到的错误是
What went wrong:
org.gradle.api.tasks.SourceSetOutput.getClassesDir()Ljava/io/File;
Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Exception is:
java.lang.NoSuchMethodError:
org.gradle.api.tasks.SourceSetOutput.getClassesDir()Ljava/io/File;
at org.sonarqube.gradle.SonarQubePlugin.configureSourceDirsAndJavaClasspath(SonarQubePlugin.java:169)
at org.sonarqube.gradle.SonarQubePlugin.lambda$configureForJava$1(SonarQubePlugin.java:104)
我尝试将gradle版本降级到4.0,并发现了问题,现在它正在显示
:sonarqube
Gradle now uses separate output directories for each JVM language, but this build assumes a single directory for all classes from a source set. This behaviour has been deprecated and is scheduled to be removed in Gradle 5.0
at org.gradle.api.internal.tasks.DefaultSourceSetOutput.getClassesDir(DefaultSourceSetOutput.java:79)
at org.gradle.api.internal.tasks.DefaultSourceSetOutput_Decorated.getClassesDir(Unknown Source)
at org.sonarqube.gradle.SonarQubePlugin.configureSourceDirsAndJavaClasspath(SonarQubePlugin.java:169)
我的代码中存在的Gradle配置如下所示,
sonarqube {
properties {
property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec"
property "sonar.exclusions", "**/generated-*/**/*"
property "sonar.sources", "src/main/java"
property "sonar.tests", "src/test/java"
//property "sonar.java.binaries", "${project.buildDir}/classes/main/"
}
}
我相信可以通过在sonarqube属性列表中添加预期属性或显式设置源目录来解决此问题。有人可以建议如何做吗?
答案 0 :(得分:2)
我使用Gradle 5.1,并且使用org.sonarqube:2.5观察到了相同的结果。但是,当我使用org.sonarqube:2.7时,它对我有用。
plugins {
id "org.sonarqube" version "2.7"
}
答案 1 :(得分:0)
我使用了Gradle 5.3
,但出现了此问题中的错误。然后,我降级为Gradle 4.10.3
。它像魔术一样工作。
答案 2 :(得分:0)
这不是一个完整的解决方案,我将构建脚本迁移到kotlin,this帮助了我。