添加插件的SBT插件

时间:2014-12-09 17:04:47

标签: scala playframework-2.0 sbt sbt-plugin

我正在为我的组织创建一个插件,它提供了一个快速创建新服务的框架。作为其中的一部分,所有项目都应该有几个插件。虽然我可以为此创建一个模板并从中创建每个新应用程序,但我宁愿创建一个插件。这个插件将提供一组基本功能,并包含一堆其他插件。

以这种方式,最终用户只需要在升级其堆栈时更新一个插件。它的灵活性较低,但管理起来也容易得多。我开始编写我的插件,我想要做的第一件事就是将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 /主/阶/ COM /示例/ SBT /插件/ 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)
  }
}

1 个答案:

答案 0 :(得分:3)

您可以使用自动插件将项目设置和配置导入SBT:http://www.scala-sbt.org/release/api/index.html#sbt.AutoPlugin

这是在SBT 0.13.5中引入的

生产中使用的Autoplugins示例:http://github.com/allenai/sbt-plugins 他们几周前在PNWScala上做过关于它的演讲。它至少需要SBT 0.13.5