gpt4 book ai didi

java - 使用 Eclipse 在 Gradle 中选择正确的 JRE 版本

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:07 24 4
gpt4 key购买 nike

我使用 Gradle 和 Eclipse 插件为我的项目生成项目文件,但我无法将正确的 JRE 版本放入 .classpath 中。我可以添加一个 JRE 容器,但我不知道如何删除默认容器 - 因为这个项目是在开发人员之间共享的,他们可能在 Eclipse 中设置了不同的默认值,所以我想控制这是手动的。

我认为这应该的工作方式是这样的:

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.6

由于 targetCompatibilitysourceCompatibility 相同,我希望此设置转到 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'
}
}

做这样的事情,我最终在.classpath 中得到两个 JRE 容器:

<?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>

我如何告诉 gradle 我想要一个 JRE 1.6 容器,默认容器?


我所追求的一些限制:

  • Eclipse 中的默认设置应该是无关紧要的
  • 最好,我希望脚本查找容器 - 在上面的脚本中,定义要添加的容器的字符串是用户相关的。我希望在“已安装的 JRE”中查找与 sourceConfiguration 匹配的版本会更好 - 如果 Eclipse 中没有安装此类 JRE,我可以抛出错误。

最佳答案

我最终以比我想要的稍微更手动的方式解决了这个问题 - 但至少它有效。

为了将设置与实现分开,每个开发人员都有一个未 checkin 版本控制的 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"
}
}
}

到目前为止,我已经在几个项目中使用过它并且它有效,所以我想它至少是相当便携的 - 但可能需要稍作修改才能使其适用于其他人。

关于java - 使用 Eclipse 在 Gradle 中选择正确的 JRE 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com