【问题标题】:Publish Local generates empty jar in a multi-module SBT projectPublish Local 在多模块 SBT 项目中生成空 jar
【发布时间】:2021-10-03 05:44:18
【问题描述】:

当我在某些模块上执行 publishLocal 时,它可以工作,但是对于一个模块,它会生成只有 META-INF/Manifest.MF 的空 jar。所有模块都有一个标准的文件夹结构 src>main>scala 。唯一的区别是这个模块没有主类,只是一个模块有很多其他模块使用的util类。

更多详情如下:

我有一个用于多项目构建的标准文件夹结构。

├── project
│   └── build.properties
│   └── plugins.sbt
├── build.sbt
├── Bar
│   └── src
├── Fizz
│   └── src
└── Foo
    └── src

我的 plugins.sbt 是:addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

我的 build.sbt 是

ThisBuild / name := "My main Project"

ThisBuild / version := "0.1"
ThisBuild / scalaVersion := "2.11.8"

//Modules/Projects
lazy val global = project
  .in(file("."))
  .settings(settings)
  .disablePlugins(AssemblyPlugin)
  .aggregate(
    bar,
    fizz,
    foo
  )

lazy val bar = project
  .settings(
    name := "Bar",
    settings,
    assemblySettings
  )

lazy val fizz = project
  .settings(
    name := "Fizz",
    settings,
    assemblySettings
  )

lazy val foo = project
  .settings(
    name := "Foo",
    settings,
    assemblySettings
  )
  .dependsOn(
    fizz
  )

lazy val compilerOptions = Seq(
  "-encoding",
  "utf8"
)

lazy val settings = Seq(
  scalacOptions ++= compilerOptions
)

lazy val assemblySettings = Seq(
  assemblyMergeStrategy in assembly := {
    case PathList("META-INF", xs @ _*) => MergeStrategy.discard
    case x =>
      val oldStrategy = (assemblyMergeStrategy in assembly).value
      oldStrategy(x)
  }
)

所以bar/publishLocal 可以工作,但fizz/publishLocal 会生成一个空 jar,然后在已发布的本地 jar 的 fizz 上中继的任何其他项目都会失败。

编辑:修正了 Fuzz 到 Fizz 的拼写错误

【问题讨论】:

  • Fuzzfizz?如果您尝试发布 fuzz 但定义了 fizz,这可以解释..
  • @GaëlJ 已修复,这是一个错字,我的错。

标签: scala apache-spark sbt sbt-assembly sbt-plugin


【解决方案1】:

所以上述问题只是 jenkins 中的问题,其他任何地方都没有。通过将build.sbt 中的变量重命名为 PascalCase 以匹配文件夹名称,然后创建正确的 jar,修复了该问题。例如

lazy val Foo = project
  .settings(
    name := "Foo",
    settings,
    assemblySettings
  )
  .dependsOn(
    Fizz
  )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多