Estou usando o SBT (dentro do IntelliJ IDEA) para construir um projeto Scala simples.
Gostaria de saber qual é a maneira mais simples de construir um arquivo Uber JAR (também conhecido como Fat JAR, Super JAR).
No momento, estou usando o SBT, mas quando envio meu arquivo JAR para o Apache Spark , recebo o seguinte erro:
Exceção no thread "main" java.lang.SecurityException: Resumo do arquivo de assinatura inválido para atributos principais do Manifest
Ou este erro durante o tempo de compilação:
java.lang.RuntimeException: deduplicate: diferentes conteúdos de arquivo encontrados no seguinte:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCIES
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
Ele parece que é porque alguns dos meus dependências incluem arquivos de assinatura (META-INF), que precisa ser removido no final do arquivo JAR Uber.
Tentei usar o plug - in sbt-assembly assim:
/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 clico em " Build Artifact ... " no IntelliJ IDEA, recebo um arquivo JAR. Mas acabo com o mesmo erro ...
Sou novo no SBT e não tenho muita experiência com o IntelliJ IDE.
Obrigado.
META-INF
arquivos - uma postagem de blog que pode ajudar: janschulte.wordpress.com/2014/03/20/…