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?
也许这个属性(或另一个)和[Wrapper](http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html )可以使用的任务? – mkobit 2014-11-04 18:47:06
包装任务本身除了生成一个bash/batch脚本以外,还会创建一个小的jar文件。但是你可以调整生成的脚本来指向所需的java安装。无论如何。我会优先使用JAVA_HOME指向一个java7。为什么使用java8创建兼容java7的java代码有什么原因吗? – 2014-11-04 19:17:28
Java 8是我为我的本地应用程序(如IntelliJ)运行的默认设置,以及我希望成为几乎所有其他项目的用途。对于这个特定的项目,它需要符合Java 7,这就是为什么我寻找一个解决方案来制作一个项目特定的运行时,其中Gradle是使用特定版本的Java引导的,或者是它运行带有特定版本的FindBugs任务的Java。 – mkobit 2014-11-04 21:16:02