我正在为我的组织创建一个插件,它提供了一个快速创建新服务的框架。作为其中的一部分,所有项目都应该有几个插件。虽然我可以为此创建一个模板并从中创建每个新应用程序,但我宁愿创建一个插件。该插件将提供一组基本功能,并包含许多其他插件。
以这种方式,最终用户只需要在他们想要升级他们的堆栈时更新一个插件。它不太灵活,但也更容易管理。我开始编写我的插件,我想做的第一件事就是将 Play 插件绑定到项目中。但是我似乎无法让它工作。我尝试将 Play 添加sbt-plugin
到我plugins.sbt
的插件中,但它不允许我访问play.Play.autoLoader._
插件应用程序代码中的命名空间。例如:
项目/plugins.sbt
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.6")
src/main/scala/com/example/sbt/plugin/Plugin.scala
package com.example.sbt.plugin
import sbt._ // works just fine
import play.Play.autoImport._ // error, path doesn't exist
object Plugin {
def project(settings: Seq[Def.Setting[_] /* other params */) : Project = {
Project(settings).enablePlugins(play.PlayScala)
}
}