When I do publishLocal on some modules it works, but for one module it generates empty jar with only META-INF/Manifest.MF
. All modules have a standard folder structure src>main>scala
. The only difference is this module has no main class and is just a module with a lot of util classes used by other modules.
More details below:
I have a standard folder structure for a multi project build.
├── project
│ └── build.properties
│ └── plugins.sbt
├── build.sbt
├── Bar
│ └── src
├── Fizz
│ └── src
└── Foo
└── src
My plugins.sbt is : addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
My build.sbt is
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)
}
)
So bar/publishLocal
works but fizz/publishLocal
generates an empty jar, and then any other project relaying on published local jar of fizz fails.
Edit: Fixed typo of Fuzz to Fizz