如何使用 sbt 程序集传递 mainClass 参数
How to pass mainClass argument using sbt assembly
不确定是否可能,但我希望有几个主要的 类 并且我不希望在我 运行 sbt assembly
[ 之前每次都更改 sbt.build =14=]
有没有办法在调用 assembly
时传递 mainClass
参数?
像:
project> assembly -mainClass someApp.scala
?
谢谢
所以我想出了一些解决方案(实际上并没有在终端中指定 mainClass)
我有一个 project/module(它是一个 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, ...)
现在我可以 select sbt 中的新 project/module 和 运行 assembly
在新的目标文件夹中生成一个 jar。
这基本上是假装一个模块有 2 个模块。
注意:我还没有 运行 罐子。
我会尝试类似的方法:
sbt "set mainClass in assembly := Some(\"com.some.Class\")" assembly
基本上,您应该能够使用这样的语句在任何构建范围内定义任何键。只需注意转义引号。
不确定是否可能,但我希望有几个主要的 类 并且我不希望在我 运行 sbt assembly
[ 之前每次都更改 sbt.build =14=]
有没有办法在调用 assembly
时传递 mainClass
参数?
像:
project> assembly -mainClass someApp.scala
?
谢谢
所以我想出了一些解决方案(实际上并没有在终端中指定 mainClass)
我有一个 project/module(它是一个 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, ...)
现在我可以 select sbt 中的新 project/module 和 运行 assembly
在新的目标文件夹中生成一个 jar。
这基本上是假装一个模块有 2 个模块。
注意:我还没有 运行 罐子。
我会尝试类似的方法:
sbt "set mainClass in assembly := Some(\"com.some.Class\")" assembly
基本上,您应该能够使用这样的语句在任何构建范围内定义任何键。只需注意转义引号。