【问题标题】:Execute sbt task before packaging of fat-jar在打包 fat-jar 之前执行 sbt 任务
【发布时间】:2020-02-04 22:27:29
【问题描述】:

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

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

【问题讨论】:

    标签: sbt sbt-assembly


    【解决方案1】:

    我解决了这个问题,使assembly 依赖于我的任务interpolateParameters,而interpolateParameters 依赖于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) := {}
      )
    

    希望它可以帮助某人。

    【讨论】:

      猜你喜欢
      • 2015-04-24
      • 2018-10-25
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2019-04-17
      • 1970-01-01
      • 2019-01-10
      相关资源
      最近更新 更多