Я використовую SBT (в межах IntelliJ IDEA) для побудови простого проекту Scala.
Я хотів би знати, який найпростіший спосіб створити файл Uber JAR (він же Fat JAR, Super JAR).
В даний час я використовую SBT, але коли я надсилаю свій файл JAR до Apache Spark, я отримую таку помилку:
Виняток у потоці "main" java.lang.SecurityException: Недійсний дайджест файлу підпису для основних атрибутів Manifest
Або ця помилка під час компіляції:
java.lang.RuntimeException: deduplicate: різний вміст файлу знайдено у наступному:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCY
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
Це виглядає як це відбувається тому , що деякі з моїх залежностей включають файли сигнатур (META-INF) , який повинен бути видалений в кінцевому файлі JAR Uber.
Я намагався використовувати плагін sbt-Assembly так:
/project/assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0")
/project/plugins.sbt
logLevel := Level.Warn
/build.sbt
lazy val commonSettings = Seq(
name := "Spark-Test"
version := "1.0"
scalaVersion := "2.11.4"
)
lazy val app = (project in file("app")).
settings(commonSettings: _*).
settings(
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.2.0",
"org.apache.spark" %% "spark-streaming" % "1.2.0",
"org.apache.spark" % "spark-streaming-twitter_2.10" % "1.2.0"
)
)
Коли я натискаю " Створити артефакт ... " в IntelliJ IDEA, я отримую файл JAR. Але в підсумку я отримую ту ж помилку ...
Я новачок у SBT і не дуже експериментував з IntelliJ IDE.
Дякую.
META-INF
файли - одна публікація в блозі, яка може допомогти: janschulte.wordpress.com/2014/03/20/…