我正在使用带有Eclipse插件的Gradle来生成我的项目文件,但我无法让它将正确的JRE版本放入.classpath中。我可以添加一个JRE容器,但我无法弄清如何删除默认容器 - 因为该项目在开发者之间共享,他们可能在Eclipse中设置了不同的默认值,所以我想手动控制这个过程。
我认为这应该是这样工作的:
如何告诉gradle我只想要JRE 1.6容器,而不是默认的容器?
一些限制条件:
- Eclipse中的默认设置应该是无关紧要的。 - 最好让脚本查找容器 - 在上面的脚本中,定义要添加的容器字符串取决于用户。我更喜欢在“已安装的JRE”中查找与
我认为这应该是这样工作的:
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'
}
}
这样做,我最终在 .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,则可以抛出错误。