从其他子项目触发 SBT 程序集
Trigger SBT assembly from other subproject
我有一个包含 3 个子项目和 sbt 配置文件的根项目,仅此而已。 2 个主要子项目称为 server
和 backend
,另一个称为 common
并且是两个主要项目的依赖项。 server
是 PlayFramework 项目。 backed
项目被配置为将程序集 jar 生成到 server
.
的资源目录中
jar 已正确生成并且服务器能够看到它,但我不知道如何 运行 assembly
来自 backend
的任务 server
是已编译(即我希望服务器依赖于 backend.jar 的程序集)
/* [...] */
lazy val commonSettings = Seq(
version := "0.1",
organization := "org.example",
scalaVersion := "2.11.7"
)
lazy val server = (project in file("server")).enablePlugins(PlayJava).settings(commonSettings: _*).settings(
name := """example""",
libraryDependencies ++= Seq(
/* [...] */
),
/* [...] */
unmanagedResourceDirectories in Compile += { baseDirectory.value / "resources" }
).dependsOn(common)
lazy val backend = (project in file("backend")).settings(commonSettings: _*).settings(
assemblyJarName in assembly := "backend.jar",
assemblyOutputPath in assembly := server.base / "resources/backend.jar",
libraryDependencies := Seq(
)
).dependsOn(common)
lazy val common = (project in file("common")).settings(commonSettings: _*)
onLoad in Global := (Command.process("project server", _: State)) compose (onLoad in Global).value
感谢@pfn 的评论,我让它工作了。我需要做的一件事是在服务器子项目设置中插入这一行并将 server
更改为 Compile
,所以现在是:
(compile in Compile) <<= (compile in Compile) dependsOn (assembly in backend)
我有一个包含 3 个子项目和 sbt 配置文件的根项目,仅此而已。 2 个主要子项目称为 server
和 backend
,另一个称为 common
并且是两个主要项目的依赖项。 server
是 PlayFramework 项目。 backed
项目被配置为将程序集 jar 生成到 server
.
jar 已正确生成并且服务器能够看到它,但我不知道如何 运行 assembly
来自 backend
的任务 server
是已编译(即我希望服务器依赖于 backend.jar 的程序集)
/* [...] */
lazy val commonSettings = Seq(
version := "0.1",
organization := "org.example",
scalaVersion := "2.11.7"
)
lazy val server = (project in file("server")).enablePlugins(PlayJava).settings(commonSettings: _*).settings(
name := """example""",
libraryDependencies ++= Seq(
/* [...] */
),
/* [...] */
unmanagedResourceDirectories in Compile += { baseDirectory.value / "resources" }
).dependsOn(common)
lazy val backend = (project in file("backend")).settings(commonSettings: _*).settings(
assemblyJarName in assembly := "backend.jar",
assemblyOutputPath in assembly := server.base / "resources/backend.jar",
libraryDependencies := Seq(
)
).dependsOn(common)
lazy val common = (project in file("common")).settings(commonSettings: _*)
onLoad in Global := (Command.process("project server", _: State)) compose (onLoad in Global).value
感谢@pfn 的评论,我让它工作了。我需要做的一件事是在服务器子项目设置中插入这一行并将 server
更改为 Compile
,所以现在是:
(compile in Compile) <<= (compile in Compile) dependsOn (assembly in backend)