【问题标题】:Getting Play Framework works with Gradle and IntelliJ Idea使用 Gradle 和 IntelliJ Idea 获取 Play Framework
【发布时间】:2019-07-15 06:14:11
【问题描述】:

我正在尝试使用 Gradle 作为构建工具,使用 Play Framework 构建我的 Web 应用程序。我的 IDE 是 IntelliJ Idea

我将 Play 与 Java 一起使用,因此我不想在我的项目中使用 SBT。但似乎 IntelliJ Idea 并不完全支持 Play,因为项目结构完全不同。 IntelliJ 无法识别。

google了一阵子,找到了解决办法,把这个脚本加到build.gradle:

idea {
    module {
        sourceDirs += file("app")
        testSourceDirs += file("test")
        scopes.COMPILE = [plus: [configurations.play], minus: []]
        scopes.RUNTIME = [plus: [configurations.playRun], minus:[configurations.play]]
        scopes.TEST = [plus: [configurations.playTest], minus: [configurations.playRun]]
    }
}

但是有一个问题,每次打开项目,我都要重新运行idea任务,让IntelliJ识别Play的结构。

有没有比我更好的方法?

非常感谢!


我的 Github 示例:https://github.com/TranNgocKhoa/play-gradle-intellij-example.

我的build.gradle

plugins {
    id 'play'
    id 'idea'
}

def playVersion = "2.6.7"
def scalaVersion = System.getProperty("scala.binary.version", /* default = */ "2.11")

model {
    components {
        play {
            platform play: playVersion, scala: scalaVersion, java: '1.8'
            injectedRoutesGenerator = true

            sources {
                twirlTemplates {
                    defaultImports = TwirlImports.JAVA
                }
            }
        }
    }
}


def dependencyFor(String lib, String scalaVersion, String version) {
    return lib + "_" + scalaVersion + ":" + version
}

dependencies {
    play dependencyFor("com.typesafe.play:play-guice", scalaVersion, playVersion)
    play dependencyFor("com.typesafe.play:play-logback", scalaVersion, playVersion)
    play dependencyFor("com.typesafe.play:filters-helpers", scalaVersion, playVersion)
    play dependencyFor("com.typesafe.play:play-java-jpa", scalaVersion, playVersion)

    play "org.hibernate:hibernate-core:5.4.2.Final"
    play "com.h2database:h2:1.4.197"

}

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

idea {
    module {
        sourceDirs += file("app")
        testSourceDirs += file("test")
        scopes.COMPILE = [plus: [configurations.play], minus: []]
        scopes.RUNTIME = [plus: [configurations.playRun], minus: [configurations.play]]
        scopes.TEST = [plus: [configurations.playTest], minus: [configurations.playRun]]
    }
}

我正在使用Java 8Gradle 5.4Play 2.6.7

【问题讨论】:

  • IDE 将自动配置项目结构,前提是您已在 Gradle 中正确配置它。您可以从命令行通过 Gradle 构建和运行项目吗?你配置了 Gradle play 插件:gradle.github.io/playframework 吗?
  • 我通过命令行正确运行项目,并使用 Gradle Play 插件添加了配置。你可以看看我的示例项目。

标签: java gradle intellij-idea playframework


【解决方案1】:

下面的设置现在可以工作了,需要一些技巧才能让其余的依赖项启动并运行。

plugins {
    id 'play'
    id 'idea'
}
# replace with
plugins {
    id 'idea'
    id 'org.gradle.playframework' version '0.9'
}

下一步是执行gradle idea,你应该可以只导入文件夹和intellij。如果不是这种情况,请转到 Build tools -> Gradle 并选择 use gradle

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2015-02-25
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2013-10-02
    • 2019-07-30
    相关资源
    最近更新 更多