我正在编写一个sbt插件来抽象一些样板。
我们称之为sbt-redux
然后还有一个插件sbt-assembly
。
在此任务中,我的插件(sbt-redux)需要了解项目(正在使用sbt-redux的项目)将使用sbt-assembly创建Uber jar以及jar的名称是什么。 我曾尝试在sbt-redux的插件中添加sbt-assembly,但是由于显而易见的原因,它不会在我的src文件夹中添加依赖项,因为它仅在build.sbt中具有局限性。
我尝试使用.dependsOn(assembly)
,但还是没有运气。
那么,如何在src中使用其他插件?
P.S。如果问题不清楚,请告诉我。
答案 0 :(得分:0)
我找到了一个解决方案,它正在为我工作。 如果要阅读程序集的设置,则必须确保插件依赖它。在您的build.sbt文件中,您可以添加:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7").
然后在您的AutoPlugin实现中,您应该以这种方式覆盖要求:
override def requires = super.requires && sbtassembly.AssemblyPlugin
之后,您将可以访问程序集设置和任务。
感谢gpoirier。
答案 1 :(得分:0)
为了扩展@arglee 的正确答案,当您有一个多模块项目时,addSbtPlugin
行需要成为需要依赖项的模块的 .settings
条目的一部分,例如:
lazy val mod = (project in file("mod"))
.settings(
...,
addSbtPlugin( ... ),
libraryDependencies ++= Seq( ... ),
...
)