如何让 gradle/Eclipse/play 框架协同工作?
Posted
技术标签:
【中文标题】如何让 gradle/Eclipse/play 框架协同工作?【英文标题】:How to make gradle / Eclipse / play framework work together? 【发布时间】:2016-02-04 16:50:41 【问题描述】:我尝试将 Gradle 与 Play 框架一起使用。
在命令行中一切正常,我可以运行 Gradle 存储库中定义的简单 Play 项目示例。
但是,我有一些问题要让它与 Eclipse IDE(以及 Gradle Eclipse 插件)一起工作。
app/* 文件夹中的源似乎没有添加到类路径中,Eclipse 项目依赖项没有显示任何内容。
我在这里看到了 IntelliJ IDE 的类似帖子:How to make gradle / intellij / play framework work together?,但我正在努力在 Eclipse 上找到解决方案。
我首先尝试定义源集,例如:
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】:我终于找到了一种方法来让它们一起工作。
阅读 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 ]
此外,文档指定可以通过这种方式添加类路径文件夹:
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'
希望对你有帮助。
【讨论】:
以上是关于如何让 gradle/Eclipse/play 框架协同工作?的主要内容,如果未能解决你的问题,请参考以下文章