5

要求:SBT 插件代码位于非托管 jar 中,例如lib/unmanaged-sbt-plugin-0.0.1.jar. 我期待 jar 文件会被 SBT 自动拾取,并且插件可以开箱即用,即:可以从 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) }

我想知道上述信息是否可以用来解决我的问题?

先感谢您!

4

2 回答 2

7

因此,您可以为库依赖项 ( ) 指定显式 URL ModuleID

addSbtPlugin("org.my-org" % "unmanaged-sbt-plugin" % "0.0.1"
  from "file:///./lib/unmanaged-sbt-plugin-0.0.1.jar")
于 2015-12-16T15:22:12.910 回答
1

一直在努力让它发挥作用。from "file://.."使用(使用 sbt 1.0.4)无法使其与建议的解决方案一起使用。

通过将插件放在project/lib文件夹中并将所有插件依赖项添加到plugins.sbtusing libraryDependencies ++= Seq(..)like in来使其工作build.sbt。您可以通过查看插件 pom 文件(通常在.ivy2/local/<org>/<pluginname>/poms文件夹中)找到插件依赖项。

于 2018-02-22T20:22:45.447 回答