[英]sbt-assembly exclude dependsOn dependencies
I have a project with a few subprojects, and many dependencies, One subproject will have most development (app) and generating the full jar takes time. 我有一个项目,其中包含几个子项目,并且有许多依赖项,一个子项目将具有最多的开发(应用程序),并且生成完整的jar需要时间。 So I want to split the fat-jar generation into 2 jars:
所以我想把胖子罐子分成两个罐子:
I was hoping to create a deps project like: 我希望创建一个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
)
and my app project like: 和我的应用程序项目,如:
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
)
compile-wise my-app project is dependent on the other subprojects (deps) but it should be scope provided
because I don't want it to be packaged by sbt-assembly. 面向编译的my-app项目依赖于其他子项目(deps),但应
provided
范围provided
因为我不希望它由sbt-assembly打包。
I'm going to try using the libraryDependencies, but I think that means cloning the commonDependencies, all with scope provided
. 我打算用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.