2016-06-02 41 views
2

Ich habe ein Scala Multi-Projekt mit Funken und versuchen, die sbt-Plugin sbt-Assembly 0.14.3, um ein Fettglas zu machen. Mein buils.sbt aussehen, dass:Wie man Multi-Projekt Fett Glas mit sbt-Assembly

lazy val commonSettings = Seq(
    organization := "blabla", 
    version := "0.1.0", 
    scalaVersion := "2.11.8" 
) 


lazy val core = (project in file(".")) 
    .settings(commonSettings: _*) 
    .settings(libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.6.1" % "provided", 
"org.apache.spark" %% "spark-sql" % "1.6.1" % "provided", 
"org.apache.spark" %% "spark-mllib" % "1.6.1" % "provided",...) 


lazy val sub_project = project 
    .settings(commonSettings: _*) 
    .aggregate(core) 
    .dependsOn(core) 

Und ich möchte ein fettes Glas des sub_project schaffen, so dass dieses Fett Glas enthält alle die Bibliothek und Code aus dem Projekt Kern. Ich habe versucht, die folgenden:

sbt 
project sub_project 
assembly 

und ich erhalte den folgenden Fehler:

[error] missing or invalid dependency detected while loading class file 'blabla.class'. 
[error] Could not access term spark in package org.apache, 
[error] because it (or its dependencies) are missing. Check your build definition for 
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.) 
[error] A full rebuild may help if 'blabla.class' was compiled against an incompatible version of org.apache. 
[error] one error found 

Allerdings, wenn ich „Montage“ auf dem Kernprojekt verwenden, kann ich mein Fett Glas bekommen.

+0

Entspricht Ihre angegebene Scala-Version der Datei, für die Spark kompiliert wurde? – nattyddubbs

+0

Ja, aber es ist nur die Verpackung, ich versuche noch nicht, es auszuführen, also auch wenn die Version anders ist, sollte es kein Problem für die Verpackung sein – Jitsumi

Antwort

1

Ihr Build zeigt, dass die Bibliotheksabhängigkeit von Spark (unabhängig von der provided-Anweisung) nicht im Klassenpfad von sub_project vorhanden ist, und die Fehlermeldung, die Sie erhalten, entspricht dieser. Möglicherweise möchten Sie diese Abhängigkeit zu allgemeinen Einstellungen hinzufügen.