使用gradle eclipse插件指定JRE容器

l7mqbcuq  于 9个月前  发布在  Eclipse
关注(0)|答案(2)|浏览(90)

即使sourceCompatibilitytargetCompatibility的属性设置为特定的JRE版本,JRE_CONTAINER的classpathentry也只会生成为<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>,并且eclipse设置中“Installed JRE”下的默认JRE版本并不总是与我想在项目中使用的JRE版本相匹配。
当gradle与gradle eclipse一起运行时,我如何要求gradle将JRE_CONTAINER设置为特定版本?

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
}

eclipse {
    classpath {
        containers.clear()
        containers.add(jreContainer)
    }
}
byqmnocz

byqmnocz1#

在我情况下,它工作得很好,如下所示

containers.add('org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk6')

但“jdk6”是用户特定名称

vsmadaxz

vsmadaxz2#

我还遇到了containers.clear()似乎没有任何效果的问题,容器被添加而不是替换。我遵循John Vasileff的答案,并提出了以下解决方案,以确保Eclipse JRE与目标Java版本(在我的情况下为11)相同,而不是恰好在我的PATH环境变量上的Java版本:

subprojects {
    eclipse.classpath.file.whenMerged { cp ->
        def containerPrefix = "org.eclipse.jdt.launching.JRE_CONTAINER"
        cp.entries.findAll { it.path.contains(containerPrefix) }.each {
            it.path = "${containerPrefix}/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-${compileJava.options.release.get()}/";
        }
    }

    compileJava {
        options.release = 11
    }
}

相关问题