不确定是否可行,但我希望有几个主要课程,我不希望每次在运行sbt assembly
之前更改sbt.build
有没有办法在调用mainClass
时传递assembly
参数?
喜欢:
project> assembly -mainClass someApp.scala
?
由于
答案 0 :(得分:3)
我会尝试类似的事情:
sbt "set mainClass in assembly := Some(\"com.some.Class\")" assembly
基本上你应该能够在任何构建范围中使用这样的语句定义任何键。只需注意逃避报价。
答案 1 :(得分:0)
所以我想到了一些解决方案(实际上没有在终端中指定mainClass)
我有一个项目/模块(它是一个sbt多项目)并且基本上复制了旧模块,只需进行一些更改,包括mainClass
lazy val oldProject = (project in file("modules/old-project"))
...
lazy val newProject = oldProject.copy(
id = s"${oldProject.id}-new"
).settings(
mainClass in assembly := Some("someNewApp"),
assemblyJarName in assembly := "someNew.jar",
target := file("modules/some-new-project")
)
lazy val root = (project in file("."))
.settings(commonSettings)
.dependsOn(..., oldProject, newProject, ...)
.aggregate(..., oldProject, newProject, ...)
现在我可以在sbt中选择新的项目/模块并运行assembly
,在新的目标文件夹中生成一个jar。
这基本上假装一个模块中有2个模块。
注意:我还没有运行jar。