如何让gradle / Eclipse / play框架协同工作?

时间:2016-02-04 16:50:42

标签: java eclipse gradle playframework

我尝试将Gradle与Play框架一起使用。

在命令行中一切正常,我可以运行在Gradle存储库中定义的简单Play项目示例。

但是,我有一些问题需要使用Eclipse IDE(以及Gradle Eclipse插件)。

app / *文件夹中的源代码似乎没有添加到类路径中,Eclipse项目依赖项也没有显示任何内容。

我在这里看到了类似的IntelliJ IDE帖子:How to make gradle / intellij / play framework work together?但是我很难在Eclipse上找到解决方案。

我尝试使用fisrt定义sourceSets,如:

sourceSets {
    main {
        java {
            srcDirs = ['app']
        }
    }
}

然后我得到:

  

无法在根项目'play-2.4'上找到参数[build_3exdvo6dxtqw4f3blywgxzcg3 $ _run_closure5 @ 50cee09a]的方法sourceSets()。

所以我添加

  

申请插件:'java'

与Gradle Play插件一起使用时似乎失败了:

  

无法应用插件[class'org'gradle.api.plugins.BasePlugin']   无法添加名称为“default”的配置作为具有该名称的配置。

Gradle 2.10 / Eclipse 4.5.1 / Play 2.4

任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了让它全部协同工作的方法。

阅读有关Eclipse插件(https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.eclipse.model.EclipseClasspath.html)的Gradle文档,可以通过提供额外配置来覆盖Eclipse类路径。

因此,通过在 build.gradle 中使用以下行,Play依赖关系已成功解决:

eclipse.classpath.plusConfigurations += [ configurations.play ] 

此外,文档指定可以这样添加classpath文件夹:

eclipse.classpath.file {
    withXml {
        def node = it.asNode()
        node.appendNode('classpathentry kind="src" path="app"')
    }  
}   

不幸的是,它似乎不适用于声明为播放插件的项目(我无法弄清楚原因)。

我的解决方法是应用 java-base插件并指定正确的sourceSets。

这是最终的build.gradle:

apply plugin: 'java-base'
apply plugin: 'play'
apply plugin: 'eclipse'

version = '1.0'

model {
    components {
        play {
            platform play: '2.4.6', scala: '2.11'
            injectedRoutesGenerator = true        
        }
    }
}


allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            name "typesafe-maven-release"
            url "https://repo.typesafe.com/typesafe/maven-releases"
        }
        ivy {
            name "typesafe-ivy-release"
            url "https://repo.typesafe.com/typesafe/ivy-releases"
            layout "ivy"
        }
    }
}

dependencies {
    play project(":common")
    play 'com.typesafe.play:filters-helpers_2.11:2.4.6'
}

eclipse.classpath.plusConfigurations += [ configurations.play ] 
sourceSets {
    main {
        java {
            srcDir 'app'
        }
    }
}

希望它可以提供帮助。