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
取决于我的任务 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) := {}
)
希望对大家有所帮助。
我写了一个小的 sbt
插件,用于在项目的 target
目录中编辑一些资源文件(实际上,它的工作方式类似于 maven
配置文件)。现在,当我编写并测试我的简单自定义 sbt 任务(我们称之为 interpolateParameters
)时,我希望它在 运行 sbt assembly
时在资源复制和 jar 创建之间执行。但是,我找不到任何关于执行 sbt-assembly 插件提供的 "under the hood" of assembly
任务的文档。实际上我怀疑这是否可能。
因此,我有 2 个问题:是否可以在 sbt assembly
的编译 + copyResources 和 "create 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) := {}
)
希望对大家有所帮助。