2014-11-04 123 views
0

我有一个项目需要使用旧版本的Findbugs,但我想要使用我当前已安装在计算机上的Gradle版本,路径。使用Gradle和JDK的新版本运行旧版FindBugs

这是我的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' 
} 

目标项目需要与FindBugs的一个Java 7兼容的版本被编译为Java 7。下面是是对路径的摇篮和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不同的JDK的FindBugs?

回答

2

您不能配置JDK专门用于FindBugs的任务,但你可以配置gradle这个在您的gradle.properties文件中设置一个属性,使用一般的特定JVM:

org.gradle.java.home 

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

+0

也许这个属性(或另一个)和[Wrapper](http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html )可以使用的任务? – mkobit 2014-11-04 18:47:06

+0

包装任务本身除了生成一个bash/batch脚本以外,还会创建一个小的jar文件。但是你可以调整生成的脚本来指向所需的java安装。无论如何。我会优先使用JAVA_HOME指向一个java7。为什么使用java8创建兼容java7的java代码有什么原因吗? – 2014-11-04 19:17:28

+0

Java 8是我为我的本地应用程序(如IntelliJ)运行的默认设置,以及我希望成为几乎所有其他项目的用途。对于这个特定的项目,它需要符合Java 7,这就是为什么我寻找一个解决方案来制作一个项目特定的运行时,其中Gradle是使用特定版本的Java引导的,或者是它运行带有特定版本的FindBugs任务的Java。 – mkobit 2014-11-04 21:16:02

相关问题