fat-jar打包前执行sbt任务

Execute sbt task before packaging of fat-jar

我写了一个小的 sbt 插件,用于在项目的 target 目录中编辑一些资源文件(实际上,它的工作方式类似于 maven 配置文件)。现在,当我编写并测试我的简单自定义 sbt 任务(我们称之为 interpolateParameters)时,我希望它在 运行 sbt assembly 时在资源复制和 jar 创建之间执行。但是,我找不到任何关于执行 sbt-assembly 插件提供的 "under the hood" of assembly 任务的文档。实际上我怀疑这是否可能。

因此,我有 2 个问题:是否可以在 sbt assembly 的编译 + copyResources 和 "create jar" 步骤之间以某种方式执行我的任务?如果没有,有没有办法在不创建我自己的 sbt-assembly 插件分支的情况下实现我想要的?

我解决了这个问题,让 assembly 取决于我的任务 interpolateParametersinterpolateParameters 取决于 products。这是我生成的带有解决方案的 build.sbt 文件的一部分:

lazy val some<oduleForFatJar = (project in file("some/path"))
  .dependsOn(
    someOtherModule % "test->test;compile->compile"
  )
  .settings(
    name := "some module name",
    sharedSettings,
    libraryDependencies ++= warehouseDependencies,
    mainClass in assembly := Some("com.xxxx.yyyy.Zzzz"),
    assemblyJarName in assembly := s"some_module-${version.value}.jar",
    assembly := {
      assembly dependsOn(interpolateParameters) value
    },
    interpolateParameters := {
      interpolateParameters dependsOn(products) value
    },
    (test in assembly) := {}
  )

希望对大家有所帮助。