【发布时间】:2016-03-21 22:31:58
【问题描述】:
要求:SBT 插件代码在非托管 jar 中,例如在 lib/unmanaged-sbt-plugin-0.0.1.jar 中。
我原以为 SBT 会自动获取 jar 文件,并且插件可以开箱即用,即:可以从 SBT 命令行访问任务,但事实并非如此。
jar 文件中包含 sbt/sbt.autoplugins 文件,如果从远程仓库拉到本地仓库并通过 addSbtPlugin(...) 导入,插件可以工作。请注意,我不能这样做 - 要求它从 lib/unmanaged-sbt-plugin-0.0.1.jar 加载,而不是从本地/远程仓库加载。
将以下行放在build.sbt 中不会使插件工作(也没有错误):
unmanagedJars in Compile += file("lib/unmanaged-sbt-plugin-0.0.1.jar")
addSbtPlugin(...)的实现很简单(根据http://www.scala-sbt.org/0.12.2/docs/Getting-Started/Using-Plugins.html):
def addSbtPlugin(dependency: ModuleID): Setting[Seq[ModuleID]] =
libraryDependencies <+= (sbtBinaryVersion in update, scalaBinaryVersion in update)
{ (sbtV, scalaV) => sbtPluginExtra(dependency, sbtV, scalaV) }
我想知道以上信息是否可以用来解决我的问题?
提前谢谢你!
【问题讨论】:
-
也许看看ModuleID。
"my.org" % "my-plugin" % "my-version" from "file:///path/to/jar之类的东西可能会起作用(不确定 - 也许你需要一个 .pom) -
unmanagedJars in Compile- 您是否尝试过在项目目录的 plugins.sbt 文件中?基本上project中的所有内容都是基础项目的元项目。 -
我能够使用此代码使其工作:
addSbtPlugin("org.my-org" % "unmanaged-sbt-plugin" % "0.0.1" from "file:///./lib/unmanaged-sbt-plugin-0.0.1.jar")!如果您添加答案,我会投票,谢谢!
标签: scala sbt unmanaged sbt-plugin