SBT使用Apache Ivy來實(shí)現(xiàn)托管依賴(Ivy和Maven都是對(duì)依賴的管理)
大多數(shù)時(shí)候,可以很簡(jiǎn)單的在libraryDependencies設(shè)置項(xiàng)中列出依賴灿意,也可以通過Maven POM文件或者Ivy配置文件配置依賴,而且可以通過SBT來調(diào)用這些外部配置文件崇呵。
可以使用下面的方式來定義一個(gè)依賴缤剧,其中g(shù)roupId,artifactId和revision都是字符串:
libraryDependencies += groupId % artifactId % revision
當(dāng)然域慷,要讓SBT(通過Ivy)知道從哪里下載模塊鞭执。如果你的模塊和sbt來自相同的某個(gè)默認(rèn)的倉(cāng)庫司顿,這樣就會(huì)工作。例如兄纺,Apache Derby 在標(biāo)準(zhǔn)的Maven2 倉(cāng)庫中:
libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3"
如果在build.sbt 中輸入上面的內(nèi)容大溜,然后執(zhí)行update,sbt 會(huì)將Derby 下載到 ~/.ivy2/cache/org.apach.derby(順便提一下估脆,compile依賴于update钦奋,所以大多數(shù)時(shí)候不需要手動(dòng)的執(zhí)行update)。
也可以通過 ++= 一次將所有依賴作為一個(gè)列表添加:
libraryDependencies ++= Seq(
groupID % artifactID % revision,
groupID % otherID % otherRevision
)
Ivy修正
groupID % artifactID % revision 中的reversion 不需要是一個(gè)固定的版本號(hào)疙赠。Ivy能夠根據(jù)你指定的約束選擇一個(gè)模塊的最新版本付材。你指定”latest.integration”,“2.9.+” 或者”[1.0,)”圃阳,而不是一個(gè)固定的版本號(hào)厌衔,像”1.6.1”.
解析器
不是所有的依賴包都放在同一臺(tái)服務(wù)器上,SBT默認(rèn)使用標(biāo)準(zhǔn)的Maven2倉(cāng)庫捍岳,如果你的依賴不在默認(rèn)的倉(cāng)庫中富寿,需要添加resolver來幫助Ivy找到它。
通過以下形式添加額外的倉(cāng)庫:
resolvers += name at location
添加依賴快捷方法
在SBT中添加依賴的時(shí)候锣夹,可以利用一些網(wǎng)站(例如mvnrepository.com)在上面直接查詢包對(duì)應(yīng)的groupID页徐,artifactID和revision。
在mvnrepository上直接輸入相應(yīng)包名银萍,就可以從對(duì)應(yīng)的包中得到maven和SBT的依賴变勇,如下圖: