SBT

Posted 拱头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SBT相关的知识,希望对你有一定的参考价值。

常用命令

clean删除所有生成的文件 (在 target 目录下)。
compile编译源文件(在 src/main/scalasrc/main/java 目录下)。
test编译和运行所有测试。
console进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <参数>*在和 sbt 所处的同一个虚拟机上执行项目的 main class。
packagesrc/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
help <命令>显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
reload重新加载构建定义(build.sbtproject/*.scalaproject/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。
以上的指令可以通过输入sbt后进入shell界面再进行输入,也可以通过sbt <common>的形式直接输入. 以上指令都是通过TaskKey[T]定义,示例如: val compile = TaskKey[Analysis]("compile", "Compiles sources.", APlusTask)
sbt语法:
lazy val root = (project in file("."))
创建一个Project工程定义.返回一个sbt.Project类型
在.sbt文件中可以导入.scala文件,默认导入:
import sbt._
import Process._
import Keys._
使用Project.settings修改Project的key
添加依赖包:
libraryDependencies += "org.apache.derby" % "derby" % "10.4.1.3"
插件:
插件定义了各种keys,增加了sbt本身可设置的属性和可用指令.
可以自定义sbt的SettingKey/TaskKey和InputKey,不过没有那么高级,暂时没什么用
可以通过以下网址查看sbt的所有keys定义:
http://www.scala-sbt.org/0.13/sxr/sbt/Keys.scala.html#sbt.Keys.resolvers


.sbt构建定义 构建定义有三种风格。这一部分主要就是将build.sbt文件怎么写,这个文件可以看做是一个.scala文件,只是加入例如一些默认行为.
1. 多工程 .sbt 构建定义
这个构建定义可以用来同时构建多个工程,是属于用途比较广的定义
示例代码:
val derby = "org.apache.derby" % "derby" % "10.4.1.3"

lazy val commonSettings = Seq(
organization := "com.example",
version := "0.1.0",
scalaVersion := "2.11.4"
)

lazy val root = (project in file(".")).
settings(commonSettings: _*).
settings(
name := "hello",
libraryDependencies += derby
)

2. bare .sbt 构建定义
这个语法比较简介,是IDEA默认的形式,在编译简单的工程的时候,可以使用这种形式:
示例代码:
name := "hello"

version := "1.0"

scalaVersion := "2.11.4"


3. .scala 构建定义


配置: sbt配置可以通过sbt-launch.jar,修改jar包中的/sbt/sbt.boot.properties进行配置.




以上是关于SBT的主要内容,如果未能解决你的问题,请参考以下文章

SBT是啥意思?

使用 sbt.version 1.2.8 发布到 nexus 的 Sbt 插件无法由使用 sbt.version >1.2.8 的 sbt 项目解决

sbteclipse:创建 build.sbt 和 plugins.sbt

如何在 sbt-plugin 中使用 sbt-assembly?

未找到模块:org.scala-sbt#sbt;1.1.6

SBT 项目刷新失败 [IntelliJ、Scala、SBT]