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

Java 如何使gradle/Eclipse/play框架协同工作?,java,eclipse,gradle,playframework,Java,Eclipse,Gradle,Playframework,我尝试使用Gradle和Play框架 在命令行中一切正常,我能够运行Gradle存储库中定义的简单Play项目示例 然而,我在使用EclipseIDE(以及GradleEclipsePlugin)时遇到了一些问题 似乎app/*文件夹中的源代码并没有添加到类路径中,Eclipse项目依赖项也没有显示任何内容 我在这里看到了一篇关于IntellijIDE的类似文章:但我正在努力寻找Eclipse上的解决方案 我首先尝试定义源集,如: sourceSets { main {

我尝试使用Gradle和Play框架

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

然而,我在使用EclipseIDE(以及GradleEclipsePlugin)时遇到了一些问题

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

我在这里看到了一篇关于IntellijIDE的类似文章:但我正在努力寻找Eclipse上的解决方案

我首先尝试定义源集,如:

sourceSets {
    main {
        java {
            srcDirs = ['app']
        }
    }
}
然后我得到:

找不到参数[build\u 3exdvo6dxtqw4f3blywgxzcg3$\u run]的方法sourceset()_closure5@50cee09a]在根项目“play-2.4”上

所以我补充说

应用插件:“java”

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

未能应用插件[class'org.gradle.api.plugins.BasePlugin'] 无法添加名为“default”的配置,因为具有该名称的配置已存在

Gradle2.10/Eclipse4.5.1/Play2.4


谢谢你的帮助。谢谢。

我终于找到了一种方法,让所有的工作都能一起进行

阅读Eclipse插件()上的Gradle文档,可以通过提供额外的配置来覆盖Eclipse类路径

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

eclipse.classpath.plusConfigurations += [ configurations.play ] 
此外,文档指定可以通过以下方式添加类路径文件夹:

eclipse.classpath.file {
    withXml {
        def node = it.asNode()
        node.appendNode('classpathentry kind="src" path="app"')
    }  
}   
不幸的是,它似乎不适用于声明为play插件的项目(我不知道为什么)。

我的解决方法是应用Javabase插件并指定正确的源集

这是最终版本。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'
        }
    }
}

希望能有所帮助。

我终于找到了一种方法,使所有这些都能协同工作

阅读Eclipse插件()上的Gradle文档,可以通过提供额外的配置来覆盖Eclipse类路径

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

eclipse.classpath.plusConfigurations += [ configurations.play ] 
此外,文档指定可以通过以下方式添加类路径文件夹:

eclipse.classpath.file {
    withXml {
        def node = it.asNode()
        node.appendNode('classpathentry kind="src" path="app"')
    }  
}   
不幸的是,它似乎不适用于声明为play插件的项目(我不知道为什么)。

我的解决方法是应用Javabase插件并指定正确的源集

这是最终版本。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'
        }
    }
}
希望能有所帮助