Saya menggunakan SBT (dalam IntelliJ IDEA) untuk membangun proyek Scala sederhana.
Saya ingin tahu cara termudah untuk membuat file Uber JAR (alias Fat JAR, Super JAR).
Saya saat ini menggunakan SBT tetapi ketika saya mengirimkan file JAR saya ke Apache Spark, saya mendapatkan kesalahan berikut:
Pengecualian di thread "main" java.lang.SecurityException: Intisari file tanda tangan tidak valid untuk atribut utama Manifest
Atau kesalahan ini selama waktu kompilasi:
java.lang.RuntimeException: deduplicate: konten file berbeda ditemukan sebagai berikut:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCIES
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
Ini terlihat seperti itu karena beberapa dependensi saya menyertakan file tanda tangan (META-INF) yang perlu dihapus di final file JAR Uber.
Saya mencoba menggunakan plugin sbt-assembly seperti itu:
/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"
)
)
Ketika saya mengklik " Build Artifact ... " di IntelliJ IDEA saya mendapatkan file JAR. Tapi saya berakhir dengan kesalahan yang sama ...
Saya baru mengenal SBT dan tidak terlalu bereksperimen dengan IntelliJ IDE.
Terima kasih.
META-INF
file - satu entri blog yang mungkin membantu: janschulte.wordpress.com/2014/03/20/…