【发布时间】:2012-01-31 06:15:07
【问题描述】:
我有一个 sbt (0.11.2) 插件,它需要获取插件内文本文件的路径。我怎么做? baseDirectory、sourceDirectories 等设置为包含插件的项目的基础,而不是插件本身的基础。
我想向插件用户提供一个命令,该命令从插件内的 ruby 文件中提取默认值,然后允许插件用户覆盖这些默认值。
【问题讨论】:
我有一个 sbt (0.11.2) 插件,它需要获取插件内文本文件的路径。我怎么做? baseDirectory、sourceDirectories 等设置为包含插件的项目的基础,而不是插件本身的基础。
我想向插件用户提供一个命令,该命令从插件内的 ruby 文件中提取默认值,然后允许插件用户覆盖这些默认值。
【问题讨论】:
为什么不使用 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
}
}
}
【讨论】: