【问题标题】:sbt-assembly exclude dependsOn dependenciessbt-assembly 排除dependsOn 依赖项
【发布时间】:2018-11-28 04:36:26
【问题描述】:

我有一个包含几个子项目和许多依赖项的项目,一个子项目将拥有最多的开发(应用程序)并且生成完整的 jar 需要时间。所以我想将 fat-jar 生成分成 2 个 jar:

  • deps 一个胖罐
  • 应用一个瘦罐子

我希望创建一个像这样的 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
  )

compile-wise my-app 项目依赖于其他子项目(deps),但它应该是范围provided,因为我不希望它被 sbt-assembly 打包。

我将尝试使用 libraryDependencies,但我认为这意味着克隆 commonDependencies,所有范围均为 provided

【问题讨论】:

    标签: scala sbt sbt-assembly


    【解决方案1】:

    sbt-assembly 的readme 提供了答案: 在版块:Splitting your project and deps JARs

    assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false, includeDependency = false)
    

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2013-11-18
      • 2016-05-18
      • 1970-01-01
      • 2015-12-19
      • 2013-06-09
      • 2014-04-28
      • 2015-05-24
      • 2013-07-25
      相关资源
      最近更新 更多