gradle - Gradle 在 build.gradle 中获取 Java 类路径
问题描述
FindBugs 输出诸如“缺少的类丢失...”之类的错误,因此我通过在以下内容中写入以下内容来检查它的类路径build.gradle
:
findbugsMain {
classpath.each {
println it
}
}
它不打印任何东西,这意味着类路径是空的。从关于 SO 的各种问题中,我收集到它需要包含 Java 类的类路径(每个写为缺失的类都是本机类)。
我不想硬编码,因为这个项目应该在多台计算机上工作。本机 java 类的类路径应该从 Gradle 本身中找到(它必须在某个地方!但我找不到在哪里)。
我尝试自己添加类路径,方法是:
findbugsMain {
classpath += sourceSets.main.output
classpath += sourceSets.main.compileClasspath
classpath += sourceSets.main.runtimeClasspath
classpath += sourceSets.test.output
classpath += sourceSets.test.compileClasspath
classpath.each {
println it
}
}
但这会打印:
/.../build/classes/java/main
/.../build/resources/main
/.../build/classes/java/test
/.../build/resources/test
/.../.gradle/caches/.../junit-4.12.jar
/.../.gradle/caches/.../hamcrest-core-1.3.jar
这仍然不包括Java JARS ...
以下是缺失类的示例:
> Task :findbugsMain
The following classes needed for analysis were missing:
java.lang.Object
java.io.PrintStream
java.lang.NoSuchFieldError
java.lang.System
> Task :findbugsTest
The following classes needed for analysis were missing:
java.lang.Object
java.lang.NoSuchFieldError
我知道我非常接近找到解决方案,但在这一点上我看不到正确的线是什么......
评论后编辑:尝试使用 JAVA_HOME。根据这个问题:
println org.gradle.internal.jvm.Jvm.current().getJavaHome()
打印/usr/lib/jvm/java-10-openjdk-amd64
。但是,我期待的是 Java 8 主页,因为这提供了用于运行 Gradle 的 JVM,而不是用于编译项目的 JVM(sourceCompatibily = '1.8'
在我的build.gradle
文件中指定)。