使用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.6

javaPath=C:/Program/Java/jdk1.6.0_45

jdkName=jdk1.6.0_45

在构建脚本中,然后执行以下操作以使所有配置正确:

// Set sourceCompatibility

if (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

回到顶部