使用Eclipse在Gradle中选择正确的JRE版本
我正在使用带有Eclipse插件的Gradle来为我的项目生成项目文件,但是我无法将其放入正确的JRE版本中.classpath
。我可以 添加
一个JRE容器,但是我不知道如何删除默认容器-由于该项目是在开发人员之间共享的,而开发人员可能在Eclipse中设置了不同的默认值,因此我想手动控制它。
我认为这 应该 起作用的方式是这样的:
apply plugin: 'java'apply plugin: 'eclipse'
sourceCompatibility = 1.6
由于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'
}
}
做这样的事情,我最终在 两个 JRE容器中.classpath
:
<?xml version="1.0" encoding="UTF-8"?><classpath>
<classpathentry kind="output" path="bin"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_45" exported="true"/>
</classpath>
对我追求的一些限制:
- Eclipse中的默认设置应该无关紧要
- 最好是,我希望脚本查找容器-在上面的脚本中,定义要添加的容器的字符串取决于用户。我希望在“已安装的JRE”中查找与以下版本相匹配的版本要好得多
sourceConfiguration
-如果Eclipse中未安装这样的JRE,我可以抛出一个错误。
回答:
我最终以比我想要的要多的手动方式解决了这个问题-但至少它可以工作。
为了将设置与实现分开,每个开发人员都有一个gradle.properties
未检入版本控制的文件。该文件包含以下信息(在我的工作站上):
javaVersion=1.6javaPath=C:/Program/Java/jdk1.6.0_45
jdkName=jdk1.6.0_45
在构建脚本中,然后执行以下操作以使所有配置正确:
// Set sourceCompatibilityif (project.hasProperty('javaVersion')) {
project.sourceCompatibility = project.javaVersion
}
// Set bootClasspath - but wait until after evaluation, to have all tasks defined
project.afterEvaluate {
if (project.hasProperty('javaPath')) {
project.tasks.withType(AbstractCompile, {
it.options.bootClasspath = "${project.javaPath}/jre/lib/rt.jar"
})
}
}
// Configure Eclipse .classpath
project.eclipse.classpath.file.whenMerged { Classpath cp ->
if (project.hasProperty('jdkName') {
cp.entries.findAll { it.path.contains('JRE_CONTAINER') }.each {
it.path += "/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/$project.jdkName"
}
}
}
到目前为止,我已经在几个项目中使用了它,并且它已经起作用了,所以我认为它至少是可移植的-但可能需要进行一些修改以使其适用于其他人。
以上是 使用Eclipse在Gradle中选择正确的JRE版本 的全部内容, 来源链接: utcz.com/qa/409599.html