在包装胖罐之前执行 sbt 任务



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

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

我解决了这个问题,使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) := {}
)

希望它可以帮助某人。

最新更新