Scala Play框架项目:如何从源代码中包含插件

Scala Play框架项目:如何从源代码中包含插件,scala,playframework,sbt,playframework-2.2,Scala,Playframework,Sbt,Playframework 2.2,背景: 我正在将TypeScript集成到一个Play框架(2.2.6)中,我正在尝试使用mumoshu的插件来实现这一点。问题是,该插件在windows计算机上运行“play dist”时出现问题。 为了对源代码进行一些修改,以便继续使用该插件,我从GitHub派生了代码 问题: 我有一个传统源代码结构的play framework插件: project/build.properties project/Build.scala project/plugins.sbt src/main/scal

背景: 我正在将TypeScript集成到一个Play框架(2.2.6)中,我正在尝试使用mumoshu的插件来实现这一点。问题是,该插件在windows计算机上运行“play dist”时出现问题。 为了对源代码进行一些修改,以便继续使用该插件,我从GitHub派生了代码

问题: 我有一个传统源代码结构的play framework插件:

project/build.properties
project/Build.scala
project/plugins.sbt
src/main/scala/TypeScriptPlugin
src/main/scala/TypeScriptKeys.scala
...<other code>
project/build.properties
project/Build.scala
project/plugins.sbt
src/main/scala/TypeScriptPlugin
src/main/scala/TypeScriptKeys.scala
...
我想把这个插件加入到另一个项目中,但我真的不知道从哪里开始,如何连接设置

根据前面的建议,我可以将模块添加到我的项目中,如下所示:

// 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)
}
//在project/Build.scala中。。。
对象应用程序构建扩展了构建{
lazy val typeScriptModule=ProjectRef(文件(“../../../play2 typescript”),“play2 typescript”)
lazy val main=play.Project(,).settings(typescriptSettings:*).dependsOn(typeScriptModule).aggregate(typeScriptModule)
}
其中,
typescriptSettings
在其他项目中定义。。。我想,除了添加此设置调用使插件能够工作之外,我仍然不能100%确定typescriptSettings是什么。当我将插件包含在
plugins.sbt
文件中并导入包
com.github.mumoshu.play2.typescript.TypeScriptPlugin.\u
时,这一功能最初运行得很好,但现在我包含了源代码并明确包含了模块,我不能只导入包。。。或者至少不像以前那样


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

这方面有很多激活器模板示例。我有一个项目,我们沿着这条路走。具体来说,解决你的问题;根项目play multi-domain auth/project/中的插件可以在模块(play multi-domain auth/modules/admin/、…/common和…/web)中访问

这个例子是我在使用多项目设计中看到的最清晰的例子,但是这个观点是非常主观的


我希望这有帮助。

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

  • play2 typescript
    :它是
  • play2 typescript testapp
    :哪一个是正在测试更改的play应用程序
您需要在
play2 typescript testapp
project
目录中创建如下文件:

play2 typescript.sbt

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

注意:

相对路径是指向
play2typescript
插件项目的,并且是相对于
play2typescripttestapp
中的
项目
目录的


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

这似乎很好,但我不知道如何为包含的模块设置任何设置。同样,仍然习惯于SBT设置。例如,我以前通过根项目设置插件设置。设置(typescriptSettings:*)我认为我仍然需要这样做才能工作,但不确定如何设置。当然,这只是让测试应用程序设置依赖于插件分支的来源,之后,您可以像正常操作一样执行所有操作:在测试应用程序的根目录下的build.sbt中配置您的play项目。我在Build.scala文件中使用了.settings(typescriptSettings:*),但找不到typescriptSettings,因为它是在其他项目中定义的。但是,我也无法导入该项目中定义的包。我将更新问题的描述,以更好地反映我的“测试”项目。因此,我解决了问题。问题是项目需要像这样加载到plugins.sbt文件中:lazy val root=Project.in(file(“.”).dependsOn(typescript)lazy val typescript=file(“../modules/typescript”);考虑到这个负载,我能够导入正确的外部包,并在Build.Scala文件中配置正确的设置。谢谢你的帮助!