繁体   English   中英

如何在 sbt-plugin 中使用 sbt-assembly?

[英]How to use sbt-assembly in sbt-plugin?

我正在编写一个 sbt 插件来抽象一些样板。 我们称之为sbt-redux

然后还有一个插件sbt-assembly

在这个任务中,我的插件(sbt-redux)需要知道项目(使用 sbt-redux 的项目)将使用 sbt-assembly 创建优步 jar 的位置以及 jar 的名称。 我尝试在 sbt-redux 的插件中添加 sbt-assembly,但出于显而易见的原因,它不会在我的 src 文件夹中添加依赖项,因为它仅在 build.sbt 中有限制。

我尝试使用.dependsOn(assembly)但仍然没有运气。

那么,如何在 src 中使用其他插件?

PS 如果问题不清楚,请告诉我。

在那里我找到了一个解决方案,它对我有用。 如果你想阅读程序集的设置,你必须确保你的插件依赖它。 在您的 build.sbt 文件中,您可以添加:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7").

然后在您的 AutoPlugin 实现中,您应该以这种方式覆盖 requires:

override def requires = super.requires && sbtassembly.AssemblyPlugin

之后,您将可以访问程序集设置和任务。

感谢 gpoirier。

为了扩展@arglee 的正确答案,当您有一个多模块项目时, addSbtPlugin行需要成为需要依赖项的模块的.settings条目的一部分,例如:

lazy val mod = (project in file("mod"))
  .settings(
    ...,
    addSbtPlugin( ... ),
    libraryDependencies ++= Seq( ... ),
    ...
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM