the summary of sbt
簡介
sbt是一個專門用來編譯scala工程的編譯工具,其本身也是用scala實現。
github地址
安裝與配置
安裝
- 常用方法1:下載包
- 下載
- export環境變量到PATH即可
- 常用方法2:手動安裝
- 下載sbt-launch.jar包
- 創建腳本:
bash
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
- 添加可執行權限,並放入PATH中
- 常用方法1:下載包
配置
-Dsbt.boot.properties=path/sbt.boot.properties
-Dsbt.scala.version=2.10.4
:指定sbt使用的scala版本-Dsbt.override.build.repos=true
:sbt-launch.jar中有sbt.boot.properties文件,默認使用此文件,如果不設置此參數爲true,即使指定第一個參數也不起作用-Dsbt.repository.secure=false
:是否使用https協議獲取依賴信息等,這個在國內的複雜環境裏就不要開了哈- `-Dsbt.ivy.home=path`:設置ivy存放及讀取路徑
- 工程配置
- 工程下的
project/build.properties
文件中,要根據sbt-launch.jar的版本,設置對應的版本號(sbt.version=0.13.13),否則會報錯 - 工程下的
build.sbt
中,設置編譯工程用的scala版本號(scalaVersion := “2.10.4”)
- 工程下的
- 默認是使用
${user.home}
路徑下的.ivy2/
和.sbt/
兩個文件夾下的相關配置,及存放依賴包和信息
sbt.boot.properties
文件解釋
此文件包含5個部分,scala
app
repositories
boot
和ivy
。
scala
- 指定使用的scala版本號,一般使用默認
version: ${sbt.scala.version-auto}
app
- sbt的版本信息,使用默認
org: ${sbt.organization-org.scala-sbt}
name: sbt
version: ${sbt.version-read(sbt.version)[0.13.13]}
class: ${sbt.main.class-sbt.xMain}
components: xsbti,extra
cross-versioned: ${sbt.cross.versioned-false}
resources: ${sbt.extraClasspath-}
repositories
- 指定倉庫源,即依賴的jar,使用的plugin要去哪裏找並獲取
local
:指去${sbt.ivy.home}/local/
路徑下查找和保存依賴及plugin信息cache
:指去${sbt.ivy.home}/cache/
路徑下查找和保存依賴及plugin信息typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
- 這個是重點
- 表示,去指定的url下的
[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
這個路徑下,去拿ivy.xml jar包 文檔及源碼信息 bootOnly
:使用sbt方式解析organization
部分
- 千萬不要改成
mavenCompatible
,此配置,會使用mvn的方式去解析organization
- 例如:工程的
project/plugins.sbt
中添加1個pluginaddSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.6")
- 使用bootOnly方式,會解析成
de.johoop/jacoco4sbt/scala_2.10/sbt_0.13/2.1.6
- 使用mavenCompatible方式,會解析成
de/johoop/jacoco4sbt/scala_2.10/sbt_0.13/2.1.6
,導致無法正確找到位置
- 使用bootOnly方式,會解析成
- 千萬不要改成
maven-central
:指去mvn中央倉庫去拉取依賴信息
boot
- 指定sbt運行的根路徑,默認路徑是
${user.home}/.sbt/boot/
- 存放運行sbt使用的scala版本及日誌
update.log
- 指定sbt運行的根路徑,默認路徑是
ivy
- 指定ivy的路徑,用於查找和存儲ivy信息(解析工程依賴)
國內加速
如果想公共使用,在~/.sbt/路徑下創建文件repositories,並將國內源放入即可。
[repositories]
local
cassandra: https://dl.bintray.com/spark-packages/maven/
ali: http://maven.aliyun.com/nexus/content/groups/public/
jcenter: http://jcenter.bintray.com/
sbt: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/
typesafe_repo: http://repo.typesafe.com/typesafe/releases
typesafe-sbt-plugins: http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
typesafe-ivy-releases: http://dl.bintray.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots
可能一些理解有誤,歡迎指正!