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

可能一些理解有误,欢迎指正!

参考资料

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