Sto usando SBT (all'interno di IntelliJ IDEA) per costruire un semplice progetto Scala.
Vorrei sapere qual è il modo più semplice per creare un file JAR Uber (noto anche come Fat JAR, Super JAR).
Attualmente sto utilizzando SBT ma quando invio il mio file JAR ad Apache Spark ottengo il seguente errore:
Eccezione nel thread "main" java.lang.SecurityException: digest del file della firma non valido per gli attributi principali del manifesto
O questo errore durante la compilazione:
java.lang.RuntimeException: deduplicate: diversi contenuti di file trovati nel seguente:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCIES
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
E sembra che sia perché alcuni dei miei dipendenze includono file di firma (META-INF), che deve essere rimosso nel file JAR finale Uber.
Ho provato a utilizzare il plug -in sbt-assembly in questo modo:
/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"
)
)
Quando faccio clic su " Build Artifact ... " in IntelliJ IDEA ottengo un file JAR. Ma finisco con lo stesso errore ...
Sono nuovo in SBT e non ho molto sperimentato con IntelliJ IDE.
Grazie.
META-INF
file - un post sul blog che potrebbe aiutare: janschulte.wordpress.com/2014/03/20/…