Я создаю приложение и пытаюсь упаковать его в виде толстой банки через сборку sbt, но мой класс не включается в окончательный файл jar. Он включает в себя зависимости двух дополнительных файлов jar, которые я создал. Мой код выглядит примерно так:SBT: Класс, не включенный в файл jar
package com.my.new.pacakge
import com.my.package.num1
import com.my.package.num2
object myNewObject { ....}
Мой файл сборки выглядит следующим образом:
organization := "com.my.new.package"
name := "myProject"
spName := "com.my.new.package/myNewObject"
version := "0.2"
scalaVersion := "2.10.4"
sparkVersion := "1.3.0"
sparkComponents ++= Seq("streaming", "sql")
libraryDependencies += "com.databricks" %% "spark-avro" % "1.0.0"
libraryDependencies += "org.apache.avro" % "avro" % "1.7.7"
libraryDependencies += "org.apache.avro" % "avro-mapred" % "1.7.7"
libraryDependencies += "com.my.package" % "num1" % "0.1"
libraryDependencies += "com.my.package" % "num2" % "0.2"
mergeStrategy in assembly := {case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.concat}
lazy val sbtAssemblySettings = Seq(
assemblyJarName in assembly := {name.value + "-" + version.value + ".jar"},
mainClass in assembly := Some("com.my.new.package.myNewObject")
)
Когда я бегу в сборе, то банку Pacakges просто отлично, но если я бегу «банку ТФ», чтобы увидеть, что находится в банке, ничего не связано с com.my.new.package. Все остальное, кажется, есть.
Существуют некоторые общие зависимости между моими другими банками и этим новым объектом, которые создают некоторые конфликты, а следовательно, стратегию слияния. Я подозреваю, что в стратегии слияния вызывается myNewObject, но я не совсем уверен, почему. Если кто-то может указать, что я делаю неправильно, это очень ценится.
К сожалению, когда я использую вышеизложенное, он больше не разрешает конфликты для многих вещей. Все они, похоже, являются элементами, содержащимися в моем каталоге .ivy2. Я попытался добавить случай, в котором говорится «case PathList («. Ivy2 », xs @ _ *) => MergeStrategy.concat», но я не уверен, что правильно написал это, поскольку он все еще не разрешает конфликты. –