[英]sbt-assembly exclude dependsOn dependencies
我有一個項目,其中包含幾個子項目,並且有許多依賴項,一個子項目將具有最多的開發(應用程序),並且生成完整的jar需要時間。 所以我想把胖子罐子分成兩個罐子:
我希望創建一個deps項目,例如:
lazy val deps = (project in file("deps"))
.settings(
libraryDependencies ++= commonDependencies,
assemblyJarName in assembly := "deps.jar",
assemblyMergeStrategy in assembly := {
case m if m.toLowerCase.endsWith("manifest.mf") => MergeStrategy.discard
case m if m.toLowerCase.matches("meta-inf.*\\.sf$") => MergeStrategy.discard
case m if m.toLowerCase.startsWith("meta-inf/services/") => MergeStrategy.filterDistinctLines
case m if m.toLowerCase.endsWith(".dct") => MergeStrategy.first
case "reference.conf" => MergeStrategy.concat
case _ => MergeStrategy.first
}
).dependsOn(
measurement,
streaming,
domain
)
和我的應用程序項目,如:
lazy val app = (project in file("my-app"))
.settings(clientEventSettings)
.settings(noPublishSettings)
.settings(
assemblyJarName in assembly := "my-app.jar",
assemblyMergeStrategy in assembly := {
case m if m.toLowerCase.endsWith("manifest.mf") => MergeStrategy.discard
case m if m.toLowerCase.matches("meta-inf.*\\.sf$") => MergeStrategy.discard
case m if m.toLowerCase.startsWith("meta-inf/services/") => MergeStrategy.filterDistinctLines
case m if m.toLowerCase.endsWith(".dct") => MergeStrategy.first
case "reference.conf" => MergeStrategy.concat
case _ => MergeStrategy.first
})
.dependsOn( //<- but do not package??
measurement,
streaming,
messagingDomain,
messagingKafkaToolkit,
domain,
analyticsWebtrekk,
commons
)
面向編譯的my-app項目依賴於其他子項目(deps),但應provided
范圍provided
因為我不希望它由sbt-assembly打包。
我打算用libraryDependencies嘗試,但我認為這意味着克隆commonDependencies,所有范圍provided
。
sbt-assembly的自述文件提供了答案:在本節中: Splitting your project and deps JARs
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false, includeDependency = false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.