插件使用

    如果一个项目的目录为hello, 并且在该项目中使用sbt-site这个插件,只需创建一个名为hello/project/site.sbt配置文件,并且通过addSbtPlugin方法申明该插件的Ivy模块ID:

    如果添加一个sbt-assembly的插件,创建一个hello/project/assembly.sbt 配置文件,并且配置如下:

    1. addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")

    并不是每个插件在默认的远程库中都存在,这个需要根据具体的插件文档来配置远程库地址:

    插件一般都会提供一些配置来添加启用插件,下一小节讨论这个问题。

    一个插件通过配置可以自动的添加到项目中,不需要额外的做任何工作,在0.13.5有一个新的特性是可以自动启用和配置在一个项目中,大部分自动插件都已经自动的进行了默认的配置,不过有个别的插件也需要明确启用。

    1. lazy val util = (project in file("util")).
    2. enablePlugins(FooPlugin, BarPlugin).
    3. name := "hello-util"
    4. )

    方法用来指定需要启用的配置。

    一个项目也可以通过disablePlugins 来排除使用一个插件。例如,在util项目中不想用插件IvyPlugin,可以如下配置:

    自动插件应该在文档中明确指定该插件是否需要显式的启用, 如果疑惑一个插件是否已经启用,可以在交互模式下使用命令plugins来判断,例如:

    1. > plugins
    2. In file:/home/jsuereth/projects/sbt/test-ivy-issues/
    3. sbt.plugins.IvyPlugin: enabled in scala-sbt-org
    4. sbt.plugins.JvmPlugin: enabled in scala-sbt-org
    5. sbt.plugins.CorePlugin: enabled in scala-sbt-org
    6. sbt.plugins.JUnitXmlReportPlugin: enabled in scala-sbt-org

    这块显示的是所有默认开启的插件,sbt 默认启用三个插件:

    • IvyPlugin: 提供依赖模块的发布、解析机制
    • JvmPlugin: 提供编译、测试、打包 Scala/Java代码机制

    另外 JUnitXmlReportPlugin插件只要是提供生成 junit-xml 文件的支持

    例如,对于 sbt-site 这个插件,用如下配置来启用该插件:

    如果是多项目构建,可以直接在项目配置中配置:

    1. lazy val util = (project in file("util"))
    2. // enable the site plugin for the `core` project
    3. lazy val core = (project in file("core")).
    4. settings(site.settings : _*)

    插件可以通过在~/.sbt/0.13/plugins/ 下一次申明配置应用在多个项目中,~/.sbt/0.13/plugins/ 是一个sbt项目,其classpath将导出到每个sbt构建项目中,粗略的讲,在~/.sbt/0.13/plugins/中的任何.sbt.scala配置都会影响到所有的sbt构建项目
    可以在~/.sbt/0.13/plugins/build.sbt 通过方法添加一个插件来应用到所有的项目中,所以如果添加一些针对机器的环境变量等的场合这个特性非常实用。

    已经存在的

    一般比较常用的有两类: