sbt使用及配置

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中
  • 配置

    • -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 bootivy

  • 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,導致無法正確找到位置
    • maven-central:指去mvn中央倉庫去拉取依賴信息
  • boot
    • 指定sbt運行的根路徑,默認路徑是${user.home}/.sbt/boot/
    • 存放運行sbt使用的scala版本及日誌update.log
  • 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

可能一些理解有誤,歡迎指正!

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章