sbt插件如何获取插件中文件的路径?

时间:2012-01-01 01:19:46

标签: scala sbt

我有一个sbt(0.11.2)插件,需要获取插件内文本文件的路径。我怎么做? baseDirectory,sourceDirectories等被设置为包含插件的项目的基础,而不是插件本身的基础。

我想向插件用户提供一个命令,该命令从插件中的ruby文件中提取默认值,然后允许插件用户覆盖这些默认值。

1 个答案:

答案 0 :(得分:1)

为什么不使用旧的Java的Class.getResource或Class.getResourceAsStream方法?例如。像这样:

object TestPlugin extends Plugin {

  override def settings = super.settings ++ Seq(
    commands += testCommand
  )

  def testCommand = Command.command("test")(action)

  def action(state: State) = {
    try {
      val in = getClass.getResourceAsStream("/test.txt")
      val text = Source.fromInputStream(in).getLines mkString System.getProperty("line.separator")
      logger(state).info(text)
      in.close()
      state
    } catch {
      case e: Exception =>
        logger(state).error(e.getMessage)
        state.fail
    }
  }
}