【问题标题】:How to integrate Play Framework 2.0 into Gradle build management using Maven dependencies?如何使用 Maven 依赖项将 Play Framework 2.0 集成到 Gradle 构建管理中?
【发布时间】:2012-05-05 04:51:04
【问题描述】:

Play framework 2.0 是一个用于创建 Web 应用程序的全栈独立框架。尽管如此,许多人可能需要将其集成到他们的构建管理中。不幸的是,我没有找到关于他的太多信息。

这是我的用例:我想创建一个使用 Scala 和 Play 2.0 的新项目。我不想使用 sbt。我想使用 Gradle,依赖管理应该通过 Maven 仓库来完成。

我只找到了这个播放模块:http://www.playframework.org/modules/maven-1.0/home,它支持通过 Maven 进行依赖管理。

我正在 Grails 中寻找类似这些示例的内容: https://github.com/grails/grails-gradle-pluginhttp://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven

当然,我可以编写调用“播放控制台命令”的脚本/任务。虽然,我不喜欢这个解决方案。有没有更好的方法来使用 Gradle / Maven 进行构建管理? 如果这是唯一的解决方案,那么我会使用 Gradle,然后调用 Play 命令(即内部 sbt),对吗?这是否可行,还是会出现其他问题?

【问题讨论】:

    标签: scala maven playframework gradle playframework-2.0


    【解决方案1】:

    这是一项非常棘手的业务。 Play 中的 SBT 用于获取依赖项、编译源代码和模板,以及 SBT 增量编译 + 自动重新加载功能。我编写了一个 build.gradle 脚本来解决所有 Play 2.0 依赖项并设置 Eclipse 或 IntelliJ IDEA 类路径,并将其设为 public here

    我稍后会在有时间的时候尝试实现编译,但这需要一些研究。 当然,您可以添加仅委托给 SBT 的编译和运行任务,但这需要在 SBT 和 Gradle 中描述您的所有项目依赖项,这将变得难以管理。

    编辑:

    我已更新sample build.gradle 文件。我添加了 playCompileplayClean 任务,它们应该有助于 CI 环境。 playCompile 任务执行以下操作:

    1. 将所有用户依赖项(在compile 配置中定义)复制到lib/ 文件夹。这是可行的,因为 Play 会从lib/ 下提取所有 jar。
    2. 执行play compile 命令编译所有源代码、模板和其他 Play 框架内容。

    您可以使用cleanCopyPlayLibsplayClean 分别删除上述命令的输出。

    请注意,Windows 上似乎有一个奇怪的问题(错误?),这意味着即使 play compile 失败,gradle 也会告诉你它成功了。

    回复评论:

    我认为你只是失踪了

    repositories{
      mavenCentral()
    }
    

    在您的文件中。检查this doc out

    【讨论】:

    • 感谢这个构建文件。现在怎么继续?使用“play new”在同一目录中创建一个新的 Play 应用程序?可以将 gradle 构建添加到 CI 服务器。虽然,例如播放测试必须通过调用脚本“play test myApp”来运行。这是最好的方法吗?我认为这是目前可以接受的解决方案...
    • 您必须使用play new 来制作新应用。然后将 gradle 文件复制到您的项目目录并运行 gradle idea/eclipse 以设置您的 IDE。使用 gradle 编译将无法正常工作,因为许多源将依赖于已编译的 Play 模板和路由类(viewsroutes 包),您无法使用当前设置进行编译。您现在仍然必须坚持使用 play 的命令集来执行此操作。
    • 谢谢。做得好。现在我确信我们可以根据需要在下一个项目中使用 Gradle 和 Play 2.0。
    • 虽然,如果我添加额外的依赖项,在我的例子中:compile 'org.mongodb:mongo-java-driver:1.3',然后我得到这个错误 ##### Could not resolve all dependencies用于配置“:testRuntime”。 > 找不到组:org.mongodb,模块:mongo-java-driver,版本:1.3。要求: :gradlePlayApp:unspecifie ##### 由于我是 Gradle 新手,我想我必须阅读有关“配置”、“组”等的 Gradle 文档。不过,您可能会立即看到什么问题?跨度>
    • 另外,如果您有兴趣直接向 gradle 添加任何支持,您可能需要联系似乎在他们的雷达上关注它的 gradle 人员github.com/gradle/gradle/blob/master/design-docs/…
    【解决方案2】:

    我在 Gradle 中为 Play Framework 1.2.x 设计了一个简单的构建脚本,您也可以将它用于 Play 2.x

    https://github.com/kirang89/play-gradle

    【讨论】:

      【解决方案3】:

      LinkedIn is currently making a Gradle plugin to support this。他们在 3 个里程碑中推出了这一点:

      1. 使用 Gradle 构建 Play 应用程序
      2. 连续模式和热重载
      3. Scala 交互式 REPL

      里程碑 1 已经完成。可通过Gradle nightly builds 获得。在上面链接的博客文章中,他们鼓励人们尝试一下。

      【讨论】:

        【解决方案4】:

        好消息,从 Gradle 2.7 开始有一个官方播放插件:https://docs.gradle.org/current/userguide/play_plugin.html

        【讨论】:

          猜你喜欢
          • 2015-10-06
          • 2012-02-22
          • 2018-01-02
          • 1970-01-01
          • 2012-06-25
          • 2013-05-20
          • 1970-01-01
          • 2010-09-06
          • 2018-01-23
          相关资源
          最近更新 更多