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-testapp
的 project
目录中创建如下文件:
play2-typescript.sbt
val metaBuild = (project in file(".")
dependsOn ProjectRef(file("../../play2-typescript"), "play2-typescript")
)
注:
相对路径是play2-typescript
插件项目,相对于play2-typescript-testapp
.
里面的project
目录
将其更改为您的设置中正确的内容,并考虑您也可以将其定义为绝对路径。
背景: 我正在将 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-testapp
的 project
目录中创建如下文件:
play2-typescript.sbt
val metaBuild = (project in file(".")
dependsOn ProjectRef(file("../../play2-typescript"), "play2-typescript")
)
注:
相对路径是play2-typescript
插件项目,相对于play2-typescript-testapp
.
project
目录
将其更改为您的设置中正确的内容,并考虑您也可以将其定义为绝对路径。