Scala 具有SBT程序集的多个主类
我希望为AWS Lambda创建JAR来运行作业任务。当前,我的build.sbt文件如下所示:Scala 具有SBT程序集的多个主类,scala,sbt,sbt-assembly,sbt-plugin,Scala,Sbt,Sbt Assembly,Sbt Plugin,我希望为AWS Lambda创建JAR来运行作业任务。当前,我的build.sbt文件如下所示: lazy val commonSettings = Seq(...) lazy val core = project .settings(commonSettings: _*) lazy val job = project .settings(commonSettings: _*) .dependsOn(core) lazy val service = project
lazy val commonSettings = Seq(...)
lazy val core = project
.settings(commonSettings: _*)
lazy val job = project
.settings(commonSettings: _*)
.dependsOn(core)
lazy val service = project
.settings(commonSettings: _*)
.settings(
mainClass in assembly := Some("io.example.service.Lambda"),
assemblyJarName in assembly := "lambda.jar"
)
.dependsOn(core)
运行sbt assembly
将服务
模块组装到我的API的jar中,效果很好。然而,模块job
将有多个Main
类(一个pr.job),当我运行sbt组装作业
时,也会组装服务
模块(即使不依赖于它)
如何将设置配置为仅在需要时组装
作业
模块,并将各个mainClass指定为单独组装的JAR?在作业
中设置mainClass以定义要使用的主类,然后运行job/assembly
来组装作业程序集jar。您需要在构建时通过显式设置属性来重写默认的主类
sbt”在程序集中设置mainClass:=Some(“另一个/类”);作业/程序集“
不确定这是否是一个好的实践,但也可以使用正确的主类集为每个作业定义一个子项目
lazy val job1 = project
.settings(commonSettings: _*)
.settings(
mainClass in assembly := Some("io.example.service.Lambda"),
assemblyJarName in assembly := "lambda.jar"
)
.dependsOn(core)
lazy val job2 = project
.settings(commonSettings: _*)
.settings(
mainClass in assembly := Some("io.example.service.Lambda2"),
assemblyJarName in assembly := "lambda2.jar"
)
.dependsOn(core)
谢谢你的快速回复。这只适用于组装作业模块。我如何配置sbt使用多个干线,每个干线生成一个jar?最简单的方法是创建多个依赖于作业的项目,然后每个项目包含各自的干线(无需配置)或者每个人都在配置他们的主任务,这是在作业项目中定义的。@DaleWijnand是否存在以及在什么地方有这样的例子?@CpILL这是我在GitHub上找到的一个: