0

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

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

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

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

我去 .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 - 这是自然名称

正如@Peter Niederwieser 建议的那样,我正在补充apply plugin: "groovy"(感谢+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 方法。

4

3 回答 3

1

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

于 2013-04-12T10:09:27.587 回答
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 特性时,两条路径都会出现。所以,我最好也包括他们两个。

于 2013-04-12T11:15:24.833 回答
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

于 2013-04-12T15:57:23.873 回答