我尝试将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
任何帮助表示赞赏。感谢。
答案 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'
}
}
}
希望它可以提供帮助。