fge*_*fge 17 java javac gradle
在我的所有项目中,我使用gradle并指定以下内容:
sourceCompatibility = "1.7"; // for example
targetCompatibility = "1.7"; // defaults to sourceCompatibility
Run Code Online (Sandbox Code Playgroud)
现在,我安装了三个不同版本的JDK,从1.6到1.8.为了从一个版本切换到另一个版本,我source改变了shell文件PATH,JAVA_HOME甚至JDK_HOME.
偶然可能会发生我使用错误的JDK版本而我不希望...在尝试任何编译任务之前是否有可能检查编译器版本是否等于targetCompatibility?
fge*_*fge 18
回答自我,感谢@JBNizet提供初始解决方案......
确实要使用解决方案JavaVersion,它发生在两者sourceCompatibility并targetCompatibility接受一个JavaVersion参数......
因此构建文件变为:
def javaVersion = JavaVersion.VERSION_1_7;
sourceCompatibility = javaVersion;
targetCompatibility = javaVersion; // defaults to sourceCompatibility
Run Code Online (Sandbox Code Playgroud)
然后任务:
task enforceVersion << {
def foundVersion = JavaVersion.current();
if (foundVersion != javaVersion)
throw new IllegalStateException("Wrong Java version; required is "
+ javaVersion + ", but found " + foundVersion);
}
compileJava.dependsOn(enforceVersion);
Run Code Online (Sandbox Code Playgroud)
它有效:
$ ./gradlew clean compileJava
:clean UP-TO-DATE
:enforceVersion FAILED
FAILURE: Build failed with an exception.
* Where:
Build file '/home/fge/src/perso/grappa-tracer-backport/build.gradle' line: 55
* What went wrong:
Execution failed for task ':enforceVersion'.
> Wrong Java version; required is 1.7, but found 1.8
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 15
我使用以下内容:
task checkJavaVersion << {
if (!JavaVersion.current().isJava6()) {
String message = "ERROR: Java 1.6 required but " +
JavaVersion.current() +
" found. Change your JAVA_HOME environment variable.";
throw new IllegalStateException(message);
}
}
compileJava.dependsOn checkJavaVersion
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9407 次 |
| 最近记录: |