我无法弄清楚这是否有效.
场景:
我想要的是
我想过拥有gradle.properties文件,定义变量.就像是
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Run Code Online (Sandbox Code Playgroud)
我不想要的
JAVA_HOME所需的JDK我可以接受很多建议:
use JAVA_HOME=<my special JDK path defined somewhere else defined>)题:
gradle.properties系统环境变量中的变量,......)连接到构建过程?我有多个JDK7可用,需要指向一个特殊版本(最低JDK_u版本).
任何答案都表示赞赏,我感谢每一个提示正确的方向.
即使将sourceCompatibility和的属性targetCompatibility设置为特定的 JRE 版本,JRE_CONTAINER唯一的类路径是否会生成为<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>,并且 eclipse 设置中“已安装的 JRE”下的默认 JRE 版本并不总是与我想要的 JRE 版本匹配在我的项目中使用。
当使用 gradle 运行 gradle 时,如何询问 gradle 将 JRE_CONTAINER 设置为特定版本gradle eclipse?
apply plugin: 'java'
apply plugin: 'eclipse'
ext {
target = "1.5"
}
def jreContainer = 'org.eclipse.jdt.launching.JRE_CONTAINER'
if (target == '1.4' || target == '1.5') {
jreContainer += '/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-' + target
} else if (target == '1.6' || target == '1.7') {
jreContainer += '/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-' + target
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Gradle和Eclipse插件为我的项目生成项目文件,但我无法让它将正确的JRE版本放入其中.classpath.我可以添加一个JRE容器,但我无法弄清楚如何删除默认容器 - 并且由于这个项目是在开发人员之间共享的,他们可能在Eclipse中设置了不同的默认值,我想手动控制它.
我觉得这应该有用的方式是这样的:
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = 1.6
Run Code Online (Sandbox Code Playgroud)
既然targetCompatibility是相同的sourceCompatibility,我希望这个设置转到Eclipse设置,找到一个与源版本匹配的JRE(是的,我的机器上有一个JRE安装和单独的JDK安装)并使用它.
相反,它选择了默认值,在我的机器上恰好是Java 7.
我尝试在Eclipse配置中添加一些内容:
eclipse {
jdt {
sourceCompatibility = 1.6 // tried with and without this
}
classpath {
// tried various ways to remove the old entry, among them:
file.beforeMerged { p -> p.entries.clear() }
// and then I add the "correct" one
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_45'
}
}
Run Code Online (Sandbox Code Playgroud)
做这样的事情我最终得到两个 JRE容器.classpath:
<?xml version="1.0" encoding="UTF-8"?> …Run Code Online (Sandbox Code Playgroud)