34

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-plugin或http://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and %20马文

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

4

4 回答 4

24

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

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

编辑:

我已经更新了示例 build.gradle文件。我添加了应该在 CI 环境中有所帮助的任务playCompileplayCleanplayCompile任务执行以下操作:

  1. 将所有用户依赖项(在compile配置中定义)复制到lib/文件夹。这是有效的,因为 Play 会友好地从 under 拾取所有 jars lib/
  2. 执行play compile命令编译所有源、模板和其他 Play 框架的东西。

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

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

回复评论:

我想你只是失踪了

repositories{
  mavenCentral()
}

在你的文件中。检查此文档

于 2012-04-25T00:48:51.447 回答
5

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

于 2015-09-19T13:50:51.853 回答
3

LinkedIn 目前正在制作一个 Gradle 插件来支持这一点。他们正在推出 3 个里程碑:

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

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

于 2015-06-22T03:38:29.413 回答
0

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

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

于 2012-09-02T18:02:50.503 回答