2016-06-02 14 views
2

私はsparkを使って複数のプロジェクトを作成し、sbtプラグインsbt-assembly 0.14.3を使ってfat jarを作成しようとしています。私buils.sbtは、次のようになります。sbt-assemblyでマルチプロジェクトfat jarを作成する方法

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) 

そして私は、この脂肪ジャーは、プロジェクトのコアからすべてのライブラリとコードが含まれていることを、このようなsub_projectの脂肪jarファイルを作成したいと思います。

sbt 
project sub_project 
assembly 

を、私は次のエラーを取得する: は、私は次のことを試してみました

[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 

私はコアプロジェクトの「組立」を使用する場合しかし、私は私の脂肪のjarファイルを取得することができます。

+0

指定したScalaのバージョンは、Sparkがコンパイルされたものと一致していますか? – nattyddubbs

+0

はい、パッケージングだけですが、まだ実行しようとしていないので、バージョンが異なっていてもパッケージングには問題ありません – Jitsumi

答えて

1

ビルドには、sub_projectのクラスパスにSpark(provided文に関係なく)のライブラリ依存関係が存在しないことが表示され、これと一致するエラーメッセージが表示されます。この依存関係を共通の設定に追加することもできます。

関連する問題