Tôi đang sử dụng SBT (trong IntelliJ IDEA) để xây dựng một dự án Scala đơn giản.
Tôi muốn biết cách đơn giản nhất để tạo tệp Uber JAR (còn gọi là Fat JAR, Super JAR).
Tôi hiện đang sử dụng SBT nhưng khi gửi tệp JAR của mình tới Apache Spark, tôi gặp lỗi sau:
Ngoại lệ trong chuỗi "main" java.lang.SecurityException: Thông báo tệp chữ ký không hợp lệ cho các thuộc tính chính của Tệp kê khai
Hoặc lỗi này trong thời gian biên dịch:
java.lang.RuntimeException: debuplicate: nội dung tệp khác nhau được tìm thấy trong phần sau:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCIES
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
Có vẻ như đó là do một số phụ thuộc của tôi bao gồm tệp chữ ký (META-INF) cần được xóa trong tệp Uber JAR cuối cùng.
Tôi đã cố gắng sử dụng plugin sbt-assembly như vậy:
/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"
)
)
Khi tôi nhấp vào " Tạo phần mềm ... " trong IntelliJ IDEA, tôi nhận được tệp JAR. Nhưng cuối cùng tôi cũng mắc cùng một lỗi ...
Tôi mới sử dụng SBT và chưa thử nghiệm nhiều với IntelliJ IDE.
Cảm ơn.
META-INF
tệp - một bài đăng trên blog có thể hữu ích: janschulte.wordpress.com/2014/03/20/…