-
sbt package 只打包当前子项目。
-
sbt assemblyPackageDependency 仅包括依赖项。不包括标记为dependsOn 的项目。
assembly、assemblyPackageDependency 或assemblyPackageScala 是使用AssemblyOption 中定义的设置来创建各种包装配置的任务。一些相关选项如下所示:
AssemblyOption(assemblyDirectory: File,
// include compiled class files from itself or subprojects
includeBin: Boolean = true,
includeScala: Boolean = true,
// include class files from external dependencies
includeDependency: Boolean = true,
使用下面显示的配置的汇编调用的变体将导致包含所有子项目的二进制文件
assemblyOption in assemblyPackage := {
val ao = (assemblyOption in assembly).value
ao.copy(includeBin = true, includeScala = false, includeDependency = false)
},
但是,如果您想保留assembly,可以创建一个新任务assemblyPackage。来自主要build.sbt的片段
lazy val assemblyPackage = TaskKey[File]("assemblyPackage", "packages multi-project using sbt-assembly")
lazy val assemblyPackageSettings = Seq(
// Required packaging configuartion
assemblyOption in assemblyPackageDependency := {
val ao = (assemblyOption in assemblyPackageDependency).value
ao.copy(includeScala = false)
},
// Some boiler-plate settings to be copied to new task
assembledMappings in assemblyPackage := Assembly.assembledMappingsTask(assemblyPackage).value,
assemblyPackage := Assembly.assemblyTask(assemblyPackage).value,
test in assemblyPackage := (test in assembly).value,
assembleArtifact in assemblyPackage := true,
packageOptions in assemblyPackage := (packageOptions in (Compile, packageBin)).value,
assemblyOutputPath in assemblyPackage := { (target in assembly).value / (assemblyJarName in assemblyPackage).value },
assemblyJarName in assemblyPackage := ((assemblyJarName in assemblyPackage) or (assemblyDefaultJarName in assemblyPackage)).value,
// Choice of jar name
assemblyDefaultJarName in assemblyPackage := { name.value + "-assemblyPackage-" + version.value + ".jar" },
assemblyOption in assemblyPackage := {
val ao = (assemblyOption in assembly).value
ao.copy(includeScala = false, includeDependency = false)
},
assemblyPackage := Assembly.assemblyTask(assemblyPackage).value
)
// And use itas
lazy val misc = project.settings(commonSettings ++ assemblyPackageSettings)
.dependsOn(common)
sbt assemblyPackage 将构建带有所有依赖子项目的*-assemblyPackage-*jar 文件。