如何在build.gradle中设置Eclipse项目的groovy特性?

时间:2013-04-12 09:49:11

标签: eclipse groovy gradle

在项目上运行gradle cleanEclipse Eclipse后,它失去了Groovy的性质。如何自动设置这种性质,或者只是对Gradle说不管它。

编辑: 根据do doc,我可以在build.gradle中写道:

eclipse {
  project {
    natures 'some.extra.eclipse.nature', 'some.another.interesting.nature'
  }
}

但是,常规性质的名称是什么,或者我怎么能得到它呢?

我转到.project并查看:

<natures>
    <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>bndtools.core.bndnature</nature>
</natures>

org.eclipse.jdt.groovy.core.groovyNature - 这是自然名称

我正在添加apply plugin: "groovy",正如@Peter Niederwieser所建议的那样(感谢+ 1)

但是

运行gradle cleanEclipse Eclipse后,我有正确的.project文件,项目图标上有“G”,但在.classpath中没有两行:

<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
<classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"/>

当我手动设置Groovy性质时,存在。

似乎这些行很重要,因为在该变体中,项目甚至在编译级别上也显示错误 - 它没有看到一些Groovy方法。

3 个答案:

答案 0 :(得分:1)

再次考虑这一点,Gradle将为那些应用了groovy(或groovy-base)插件的项目添加Groovy特性。因此,要么在Gradle端添加该插件,要么在手动添加Groovy特性之后不运行cleanEclipse,或者切换到Eclipse Gradle tooling而不是生成Eclipse文件。

答案 1 :(得分:1)

看来,对于一个真正的常规自然环境,我不仅需要设置

natures.add 'org.eclipse.jdt.groovy.core.groovyNature'

apply plugin: "groovy"

,还要编辑类路径。

eclipse {
    classpath {
        file {
            withXml {
                Node node = it.asNode()
                node.appendNode('classpathentry',[exported:"true",kind:"con",path:"GROOVY_SUPPORT"]) 
                node.appendNode('classpathentry',[exported:"true",kind:"con",path:"GROOVY_DSL_SUPPORT"])
            }
        }
    }
}

有趣的是,如果我们手动打开groovy类路径,只会在.classpath文件中出现路径“GROOVY_SUPPORT”。这对我的项目来说也足够了。但是当手动转动整个Groovy本质时,两条路径都会出现。所以,我也更好地将它们包括在内。

答案 2 :(得分:0)

Gradle-Eclipse插件(这是Eclipse的gradle工具,而不是gradle的Eclipse插件)。应该可以在Eclipse 3.6上安装。 (我说应该可以安装,因为我们不再对3.6进行测试,但不应该有任何原因导致它被破坏)。如果您安装此插件,您应该能够将gradle项目导入Eclipse而无需调用gradle Eclipse

您可以从更新站点安装:

http://dist.springsource.com/release/TOOLS/gradle

有关该项目的更多信息,请点击此处:

https://github.com/SpringSource/eclipse-integration-gradle