前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sbt快速入门

sbt快速入门

作者头像
十毛
发布2021-11-24 13:29:31
1K0
发布2021-11-24 13:29:31
举报
文章被收录于专栏:用户1337634的专栏

sbt类似与maven, gradle的项目管理工具,主要用在scala,也可以用在java项目,本文介绍一下常用的使用命令和语法

安装

  • mac
代码语言:javascript
复制
brew install sbt
  • redhat&centos
代码语言:javascript
复制
# remove old Bintray repo file
sudo rm -f /etc/yum.repos.d/bintray-rpm.repo
curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo
sudo mv sbt-rpm.repo /etc/yum.repos.d/
sudo yum install sbt

快速使用

代码语言:javascript
复制
➜ mkdir foo-build
➜ cd foo-build
➜ touch build.sbt
➜  foo-build sbt
[info] Updated file /Users/timxia/Workspace/sbt/foo-build/project/build.properties: set sbt.version to 1.3.13
[info] welcome to sbt 1.3.13 (Oracle Corporation Java 1.8.0_251)
[info] loading global plugins from /Users/timxia/.sbt/1.0/plugins
[info] loading settings for project foo-build from build.sbt ...
[info] set current project to foo-build (in build file:/Users/timxia/Workspace/sbt/foo-build/)
[info] sbt server started at local:///Users/timxia/.sbt/1.0/server/7c3ce04c72481c8444dd/sock
sbt:foo-build>

sbt命令

  • sbt启动,进入交互式命令
  • help帮助
  • exit 退出sbt
  • compile编译, ~compile自动检测更新后编译
  • run 启动
  • reload 重新加载build.sbt
  • session save 保存当前会话信息到build.sbt
  • test执行测试, ~testQuick自动检测并执行测试
  • projects列出所有项目

build.sbt语法

代码语言:javascript
复制
# 设置scala版本号
ThisBuild / scalaVersion := "2.13.6"
# 设置项目所属组织
ThisBuild / organization := "com.example"

# 自定义变量
val scalaTest = "org.scalatest" %% "scalatest" % "3.2.7"

## 配置项目hello
lazy val hello = (project in file("."))
  # 如果配置了子项目,则聚合起来;父项目上执行的命令,也会广播到子项目
  .aggregate(helloCore)
  # 设置对子项目的依赖
  .dependsOn(helloCore)
  .settings(
    # 设置项目名称
    name := "Hello",
    # 添加项目依赖: groupID % artifactID % revision % configuration,这里的configuration类似于maven中的scope,可以Test, Compile
    # 如果是scala的库,一般使用%%,这样就会找到对应scala版本的库
    libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.7" % Test,
    # 如果使用自定义变量,也可以用如下格式
    libraryDependencies += scalaTest % Test,
  )

## 配置一个子项目helloCore
lazy val helloCore = (project in file("core"))
  .settings(
    name := "Hello Core",
    libraryDependencies += scalaTest % Test,
  )

## 覆盖一下jar包
dependencyOverrides ++= Seq(
  "gdt.api" % "gdt-api-aaa" % "1.0.6",
  "org.apache.commons" % "commons-compress" % "1.9",
  "gdt.api" % "api-client-core" % "2.2.6",
  "gdt.api" % "api-client-l5" % "1.1.2",
  "gdt.api" % "gdt-api-adservice" % "2.0.75",
  "com.alibaba" % "fastjson" % "1.2.67",
  "gdt.api" % "gdt-api-customer" % "1.0.69",
  "com.fasterxml.jackson.core" % "jackson-databind" % "2.8.11",
  "com.tencent.tdbank" % "TDBusSDK" % "1.2.17",
  "gdt.infra" % "infra-l5" % "1.2.7"
)

## 排除一些jar包
excludeDependencies ++= Seq(
  // commons-logging is replaced by jcl-over-slf4j
  ExclusionRule("org.slf4j", "slf4j-log4j12")
)

常见问题

  • 有时候启动sbt后terminal窗口会停在Getting org.scala-sbt sbt上,也不知道发生了什么。可以用如下命令,查看程序进展tail -f $HOME/.sbt/boot/update.log

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/9/29 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 快速使用
  • sbt命令
  • build.sbt语法
  • 常见问题
  • 参考
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档