使用新版本的Gradle和JDK运行旧版本的FindBugs

时间:2014-11-04 08:56:15

标签: java gradle

我有一个项目需要使用较旧版本的Findbugs,但我想使用我目前在我的计算机上安装的Gradle版本,这是我的路径。

以下是我使用Java版本和Findbugs进行配置的一部分:

apply plugin: 'findbugs'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
findbugs {
    effort = "max"
    ignoreFailures = false
    // Only run findbugs on source files
    sourceSets = [sourceSets.main]
    // File has exclusions for Findbugs
    excludeFilter = file("${rootProject.projectDir}/config/findbugs.xml")
    toolVersion = '2.0.3'
}

需要使用Java 7兼容版本的FindBugs为Java 7编译目标项目。以下是路径上的Gradle和Java版本:

$ gradle --version

------------------------------------------------------------
Gradle 2.1
------------------------------------------------------------

Build time:   2014-09-08 10:40:39 UTC
Build number: none
Revision:     e6cf70745ac11fa943e19294d19a2c527a669a53

Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0 (Oracle Corporation 25.0-b70)
OS:           Windows 7 6.1 amd64

如果我尝试运行FindBugs任务,我会得到以下错误输出:

$ gradle  :findbugsMain
:Project:compileJava UP-TO-DATE
:Project:processResources UP-TO-DATE
:Project:classes UP-TO-DATE
:Project:findbugsMain FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Project:findbugsMain'.
> The version of FindBugs (2.0.3) inferred from FindBugs classpath is too low to work with currently used Java version (1.8). Please use higher version of
FindBugs. Inspected FindBugs classpath: [findbugs-2.0.3.jar, jcip-annotations-1.0.jar, jsr305-2.0.1.jar, bcel-2.0.1.jar, jFormatString-2.0.1.jar, dom4j-1.6
.1.jar, asm-3.3.jar, asm-commons-3.3.jar, commons-lang-2.6.jar, AppleJavaExtensions-1.4.jar, jaxen-1.1.6.jar, xml-apis-1.0.b2.jar, asm-tree-3.3.jar]

如何配置此项目以适当地运行较旧版本的FindBugs而无需编辑环境变量?如何使用与Gradle当前运行的不同JDK运行FindBugs?

1 个答案:

答案 0 :(得分:2)

您无法配置专门用于Findbugs任务的JDK,但您可以通过在gradle.properties文件中设置属性来配置gradle以使用特定的jvm:

org.gradle.java.home 

并不是说这个java将用于整个gradle过程,而不仅仅用于Findbugs,但它不需要更改你的环境变量。