我正在尝试构建单个spark scala作业。
据我所知,它应该在spark目录中使用<sbt assembly>
命令完成,但是使用此方法将构建那里存在的所有作业。
有没有办法一次构建一个特定的文件?
答案 0 :(得分:0)
您需要将项目拆分为多个SBT子项目(您可能已经这样做了)。然后,您可以使用SBT multi-project build。
如果您这样做,您可以navigate到任何子项目并单独构建它。请注意,只有在每个子项目构建时才能构建单独的JAR,而不是在聚合根项目中构建。如果要以非交互方式构建,可以将相同的命令传递给SBT,就像在SBT shell中键入一样:
sbt "project client" "package"
将package
命令替换为您使用的任何其他打包命令,例如assembly
或one-jar
等。
对于示例项目检查this。项目结构如下(SBT shell):
root > projects
[info] client
[info] common
[info] * root
[info] server
项目定义如下:
lazy val root = Project(id = "root",
base = file("."))
.aggregate(common, client, server)
lazy val client = Project(id = "client", base = file("client"))
settings(clientSettings: _*) dependsOn(common)
lazy val server = Project(id = "server", base = file("server"))
settings(serverSettings: _*) dependsOn(common)
lazy val common = Project(id = "common", base = file("common"))
settings(commonSettings: _*)
正如您所看到的,有一个root
项目聚合了其他3个项目。要构建client
或server
,您必须先构建common
。但是,client
可以与server
分开构建,反之亦然。要构建您构建的所有内容root
。