SBT Multi-projects 配置

Spark簡介

Spark已經(jīng)成為一個很熱門的數(shù)據(jù)分析和計(jì)算工具癣诱,它支持多種語言(Java匿沛,python,scala须板,R)碰镜,而spark本身是由scala編寫而成的,所以推薦第一次接觸spark使用scala來編寫spark程序习瑰,支持度比較高.

Build Tool

跟Java的maven一樣绪颖,scala可以使用SBT(Simple Build Tool)來構(gòu)建build項(xiàng)目結(jié)構(gòu),SBT名字上叫做一種“簡單的構(gòu)建工具”甜奄,其實(shí)個人覺得對新手并不是十分簡單柠横,可能是大家都習(xí)慣了Maven的方式吧. SBT具體的文檔介紹可以自行參考SBT文檔

SBT Multi-project 簡單配置

在實(shí)際項(xiàng)目當(dāng)中窃款,大家都可能碰到多個項(xiàng)目放在一個目錄下,需要獨(dú)立運(yùn)行牍氛,且各個子項(xiàng)目之間通過lib包依賴的情況晨继,SBT也支持這種工程的build,下面簡單介紹下如何定義目錄結(jié)構(gòu)和build文件:

SBT工程目錄結(jié)構(gòu)

可以按如下方式創(chuàng)建一個完整的工程目錄:

圖 3-1 SBT工程目錄結(jié)構(gòu)
  • test-project/build.sbt: 是主工程根目錄下的build文件搬俊,可以將主工程的包信息放在里面紊扬,一般來說最簡單的sbt build環(huán)境就是只有根目錄下的build文件,參考內(nèi)容下:
name := "test-project"
version := "1.0"
scalaVersion := "2.10.6"
  • test-project/project/build.scala: 每個根目錄/project目錄下可以放置一個build.sbt或者build.scala文件(SBT支持兩種后綴方式的文件悠抹,具體可以參考SBT文檔,這里不展開介紹)扩淀,里面定義所有模塊或者項(xiàng)目的build方式(包含主工程和子工程)楔敌,所有build.scala里的內(nèi)容在根目錄下的build.sbt(也就是test-project/build.sbt)里面都是可見的,參考內(nèi)容如下:
import sbt._
object MainProjectBuild extends Build {
  val sparkCore = "org.apache.spark" %% "spark-core" % "1.6.1" % "provided"
  val sparkHive = "org.apache.spark" %% "spark-hive" % "1.6.1" % "provided"
  val env = Option(System.getProperty("env")).getOrElse("dev")
    lazy val root = Project(
        id = "root", 
        base = file(".")
    ) aggregate(project1, project2, project3) settings(libraryDependencies ++= Seq(sparkCore, sparkHive)) 
    lazy val project1 = Project(
        id = "project1",
        base = file("project1")
    ) dependsOn(project2, project3) settings(libraryDependencies ++= Seq(sparkCore, sparkHive))
    lazy val project2= Project(
        id = "project2",
        base = file("project2"),
    ) settings(libraryDependencies ++= Seq(sparkCore, sparkHive)) 
    lazy val project3 = Project(
        id = "project3",
        base = file("project3")
    ) settings(libraryDependencies ++= Seq(sparkCore, sparkHive))
}

定義一個MainProjectBuild繼承Build類驻谆,假設(shè)我們有三個子project卵凑,project1依賴2,3才能生成,root-project通過aggregate來指定并行生成三個子項(xiàng)目胜臊,每個子項(xiàng)目target下都會產(chǎn)生一個package勺卢,而project1通過dependsOn指定了project2,project3作為其依賴的一部分象对,每當(dāng)project1編譯的時候黑忱,必須先編譯project2,project3勒魔,并且把2,3的代碼作為project1的classpath一部分甫煞,然后project1才能編譯,這樣工程之間就實(shí)現(xiàn)了依賴冠绢,同時又維持了project2抚吠,project3包的獨(dú)立性

  • test-project/project1/build.sbt: 各個子項(xiàng)目的包定義信息,具體如下所示:
organization := "test.p1"
name := "test-project-one"
version := "1.0"
scalaVersion := "2.10.5"

test-project/project2/build.sbt 和 test-project/project3/build.sbt都是一樣的配置弟胀,這樣每個子項(xiàng)目生成包名字信息都是根據(jù)其目錄下的build.sbt來指定的.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楷力,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子孵户,更是在濱河造成了極大的恐慌萧朝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夏哭,死亡現(xiàn)場離奇詭異剪勿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)方庭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門厕吉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酱固,“玉大人,你說我怎么就攤上這事头朱≡吮” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵项钮,是天一觀的道長班眯。 經(jīng)常有香客問我,道長烁巫,這世上最難降的妖魔是什么署隘? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮亚隙,結(jié)果婚禮上磁餐,老公的妹妹穿的比我還像新娘。我一直安慰自己阿弃,他們只是感情好诊霹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渣淳,像睡著了一般脾还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上入愧,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天鄙漏,我揣著相機(jī)與錄音,去河邊找鬼棺蛛。 笑死泥张,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鞠值。 我是一名探鬼主播媚创,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼彤恶!你這毒婦竟也來了钞钙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤声离,失蹤者是張志新(化名)和其女友劉穎芒炼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體术徊,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡本刽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片子寓。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡暗挑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斜友,到底是詐尸還是另有隱情炸裆,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布鲜屏,位于F島的核電站烹看,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洛史。R本人自食惡果不足惜惯殊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也殖。 院中可真熱鬧土思,春花似錦、人聲如沸毕源。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霎褐。三九已至,卻和暖如春该镣,著一層夾襖步出監(jiān)牢的瞬間冻璃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工损合, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留省艳,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓嫁审,卻偏偏與公主長得像跋炕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子律适,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容