Play Framework 项目:如何从源代码中包含插件

Play Framework Project: How to include plugin from source

背景: 我正在将 TypeScript 集成到 Play Framework (2.2.6) 中,我正在尝试使用 mumoshu 的插件来完成此操作。问题是,当 运行 "play dist" 在 windows 机器上时,插件有问题。 我从 GitHub 分叉了代码,以便对源代码进行一些修改,以便我可以继续使用该插件。

问题: 我在传统源码结构中有一个播放框架插件:

project/build.properties
project/Build.scala
project/plugins.sbt
src/main/scala/TypeScriptPlugin
src/main/scala/TypeScriptKeys.scala
...<other code>

我想将此插件包含到另一个项目中,但我真的不知道从哪里开始以及如何连接设置。

根据之前的建议,我已经能够按如下方式将模块添加到我的项目中:

// In project/Build.scala...
object ApplicationBuild extends Build{
    lazy val typeScriptModule = ProjectRef(file("../../../play2-typescript"), "play2-typescript")

    lazy val main = play.Project(<appName>, <appVersion>, <appDependencies>).settings(typescriptSettings: _*).dependsOn(typeScriptModule).aggregate(typeScriptModule)
}

在另一个项目中定义了 typescriptSettings...我想,我仍然不能 100% 确定除了添加此设置调用之外是什么 typescriptSettings 使插件能够工作。当我将插件包含在 plugins.sbt 文件中并导入包 com.github.mumoshu.play2.typescript.TypeScriptPlugin._ 时,这最初工作正常,但现在我包含源代码并明确包含模块,我不能只导入包...或者至少不像我以前那样。

我还是 scala/sbt 的新手,我很难在线找到有用的资源。任何帮助,将不胜感激。

有很多这方面的激活器模板示例。我有一个项目,我们遵循 https://typesafe.com/activator/template/play-multidomain-auth 路径。具体来说,解决你的问题;根项目 play-multidomain-auth/project/ 中的插件可在模块(play-multidomain-auth/modules/admin/、.../common 和 .../web)中访问。

这个例子是我在使用多项目设计时看到的最干净的例子,但是这个意见非常主观。

希望对您有所帮助。

假设在同一个父目录中有两个目录:

  • play2-typescript:这是 mumoshu's play2-typescript
  • 的克隆
  • play2-typescript-testapp:您正在其中测试更改的 play 应用程序

您需要在 play2-typescript-testappproject 目录中创建如下文件:

play2-typescript.sbt

val metaBuild = (project in file(".")
  dependsOn ProjectRef(file("../../play2-typescript"), "play2-typescript")
)

注:

相对路径是play2-typescript插件项目,相对于play2-typescript-testapp.

里面的project目录

将其更改为您的设置中正确的内容,并考虑您也可以将其定义为绝对路径。