我为在项目的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) := {}
)
希望它可以帮助某人。