如何让 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 框架协同工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何让echarts的地图悬浮框出现多组series数据

ASP让文本框保存扫描枪的数据

如何让echarts的地图悬浮框出现多组series数据

如何让echarts的地图悬浮框出现多组series数据

如何让echarts的地图悬浮框出现多组series数据

QT怎么让文本框只能输入数字