1
我正在構建一個應用程序並試圖通過sbt程序包將它打包爲一個胖jar,但是我的類沒有被包含在最終的jar文件中。它包含兩個我創建的附加jar文件作爲依賴關係。我的代碼看起來是這樣的:SBT:沒有包含在jar文件中的類
package com.my.new.pacakge
import com.my.package.num1
import com.my.package.num2
object myNewObject { ....}
我的build文件看起來像這樣:
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就好了,但如果我跑「罐子TF」看什麼在jar中,沒有任何與com.my.new.package相關的東西在那裏。其他一切似乎都在那裏。
我的其他jar和這個新對象之間存在一些共同的依賴關係,這些對象會產生一些衝突,因此會導致合併策略。我懷疑合併策略中的某些內容會導致myNewObject被彈出,但我不確定爲什麼。如果任何人都可以指出我在做什麼錯誤,不勝感激。
不幸的是,當我使用上述內容時,它不再解決很多事情的衝突。他們似乎都是包含在我的.ivy2目錄中的項目。我試圖添加一個案例,說「case PathList(」。ivy2「,xs @ _ *)=> MergeStrategy.concat」,但我不知道我寫的是否正確,因爲它仍然沒有解決衝突。 –