我试图解决创建sbt AutoPlugins的问题。 我想创建一个自动加载所有依赖项的插件,所以我使用NoTrigger策略。 我编写了自己的AutoPlugin,它必须从sbt-assembly执行汇编任务,如下所示:
/build.sbt 中的设置
name := "sbt-myplugin"
version := "0.0.1"
organization := "com.org"
scalaVersion := "2.10.6"
sbtPlugin := true
sbtVersion := "0.13.11"
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
/src/main/scala/myplugin/MyPlugin.scala 中的插件代码
package myplugin
import sbt._
import sbtassembly.AssemblyPlugin
import sbtassembly.AssemblyPlugin.autoImport._
object MyPlugin extends AutoPlugin{
override def trigger = noTrigger
override def requires = AssemblyPlugin
object autoImport {
val myAssembly = taskKey[File]("Assembled file")
}
import autoImport._
override lazy val projectSettings = Seq(
myAssembly := assembly.value
)
}
然后我用 sbt clean compile publishLocal 创建工件 在此之后,我创建了将使用我的插件的测试项目。
/project/plugins.sbt 中此项目的设置
logLevel := Level.Warn
resolvers += "Local Ivy Repository" at "file://"+Path.userHome.absolutePath+"/.ivy2/local"
addSbtPlugin("com.academmedia.ias" % "sbt-pkplace" % "0.0.1")
/biuld.sbt 中的设置
name := "test-project"
version := "1.0"
scalaVersion := "2.11.8"
lazy val root = (project in file(".")).enablePlugins(myplugin.MyPlugin)
现在我希望能够使用MyPlugin任务 myAssembly ,但我的poject sbt无法下载错误的项目设置: [error] java.lang.NoClassDefFoundError:sbtassembly / AssemblyPlugin $
我做错了什么? 谢谢你的回答!