如何在 sbt-plugin 中使用 sbt-assembly?
How to use sbt-assembly in sbt-plugin?
我正在编写一个 sbt-plugin 来抽象出一些样板文件。
我们称它为 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。如果问题不清楚,请告诉我。
在那里我找到了一个解决方案,它对我有用。
如果你想读取程序集的设置,你必须确保你的插件依赖于它。在您的 build.sbt 文件中,您可以添加:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7").
然后在您的 AutoPlugin 实现中,您应该以这种方式覆盖要求:
override def requires = super.requires && sbtassembly.AssemblyPlugin
之后,您将可以访问程序集设置和任务。
感谢 gpoirier。
为了扩展@arglee 的正确答案,当你有一个多模块项目时,addSbtPlugin
行需要成为需要依赖的模块的 .settings
条目的一部分, 比如:
lazy val mod = (project in file("mod"))
.settings(
...,
addSbtPlugin( ... ),
libraryDependencies ++= Seq( ... ),
...
)
我正在编写一个 sbt-plugin 来抽象出一些样板文件。
我们称它为 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。如果问题不清楚,请告诉我。
在那里我找到了一个解决方案,它对我有用。 如果你想读取程序集的设置,你必须确保你的插件依赖于它。在您的 build.sbt 文件中,您可以添加:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7").
然后在您的 AutoPlugin 实现中,您应该以这种方式覆盖要求:
override def requires = super.requires && sbtassembly.AssemblyPlugin
之后,您将可以访问程序集设置和任务。
感谢 gpoirier。
为了扩展@arglee 的正确答案,当你有一个多模块项目时,addSbtPlugin
行需要成为需要依赖的模块的 .settings
条目的一部分, 比如:
lazy val mod = (project in file("mod"))
.settings(
...,
addSbtPlugin( ... ),
libraryDependencies ++= Seq( ... ),
...
)