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

时间:2015-03-27 23:56:27

标签: scala playframework sbt playframework-2.2

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

问题: 我在传统的源代码结构中有一个play框架插件:

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的新手,我很难在网上找到有用的资源。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

我希望这会有所帮助。

答案 1 :(得分:0)

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

你需要在play2-typescript-testapp的{​​{1}}目录中创建一个这样的文件:

<强> play2-typescript.sbt

project

注意:

相对路径是val metaBuild = (project in file(".") dependsOn ProjectRef(file("../../play2-typescript"), "play2-typescript") ) 插件项目,相对于play2-typescript内的project目录。

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