用SBT替代Maven做自动构建

BT的全称是simple build tool,是Scala事实上的标准构建工具,当然也支持Scala和Java混合工程的构建,地址在 https://github.com/harrah/xsbt 。

比较遗憾的是,它的官方文档对于新手来说,显得晦涩难懂了些,中文资料就更少了。最近笔者陆续花了些时间,以替代现有Java Web工程的Maven构建为目的,完成了最基本的 build.sbt 编写,并集成到Jenkins中,在这里做个阶段小结,如果你要的仅仅是快速上手,希望本文能够对你有所帮助。

首先要知道的是,SBT使用与Maven一样的默认路径,核心配置文件和pom.xml一样放在base目录,名为build.sbt。这个文件的内容是一系列的对于构建工程的定义,比如名称、版本、依赖等设置。每个设置项之间以空行分隔。同时,在base目录还多出一个project子目录,我们可以往里面添加额外的定义,比如插件(plugins.sbt),这个子目录还作为SBT的临时目录或者说工作目录。另外,除了.sbt文件,我们也可以添加.scala文件,以Scala语法来描述要求更精细控制的构建逻辑,比如定义新的变量、新的方法等等。

如果现有Java Web工程使用pom.xml定义资源库和第三方依赖,那么替换成SBT,除了安装(Unix和Linux可以用各发行版自己的包管理工具安装,Windows有msi安装包可以用)之外,只需要对该工程做如下两处修改:

1- 增加project目录,添加plugins.sbt文件,内容如下

libraryDependencies <+= sbtVersion(v => v match {
  case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8"
  case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10"
  case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.11"
  case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1"
})

2- 添加build.sbt文件,内容如下

externalPom()

name := "mds"

version := "1.0"

organization := "me.laogao"

crossPath := false

autoScalaLibrary := false

javacOptions ++= Seq("-source", "1.6", "-encoding", "UTF-8", "-target", "1.6")

seq(warSettings :_*) 

接下来,打开命令行窗口,键入sbt回车,即可进入SBT的shell,可以在这里敲各种SBT命令,比如clean、compile、package等等,或者直接sbt clean compile跳过shell,熟悉Maven的朋友应该对这些命令不陌生吧?

稍微解释以下这两个配置文件的内容:

  • plugins.sbt主要定义一个xsbt-web-plugin插件,用于打包成.war而不是默认的.jar。
  • build.sbt主要定义名称、版本、编译参数等等,其中值得一说的有两点:externalPom()用于读取现有pom.xml,seq(warSettings :_*)用于加载xsbt-web-plugin插件的.war打包设置。

假如你想完全绕开pom.xml自己定义依赖(dependencies)和仓库(repositories),只需要在build.sbt中加入如下两组配置(示例):

libraryDependencies ++= Seq(
  "javax.ws.rs" % "jsr311-api" % "1.1.1" % "provided",
  "org.glassfish" % "javax.ejb" % "3.0.1" % "provided",
  "org.eclipse.persistence" % "javax.persistence" % "2.0.0" % "provided",
  "org.codehaus.jackson" % "jackson-core-lgpl" % "1.9.2",
  "org.codehaus.jackson" % "jackson-mapper-lgpl" % "1.9.2"
)

resolvers ++= Seq( 
  "Primefaces" at "http://repository.primefaces.org", 
  "local-repo" at "http://127.0.0.1:8080/nexus/content/groups/public" 

libraryDependencies和resolvers分别对应pom.xml中的dependencies和repositories,++=表示追加,Seq(…)是Scala中序列的构造器。是不是很直观很简洁呢?

接下来就是在Jenkins中配置sbt插件并加入相应工程了,过程很直接,步骤如下:

  1. 将SBT自带的sbt-launch.jar复制到Jenkins服务器能访问到的目录中;
  2. 在Jenkins主页找到Manage Jenkins > Manage Plugins -> sbt,安装启用;
  3. 在Jenkins主页找到Manage Jenkins > Configure System -> sbt,Name和Path分别输入 sbt-launch.jar 和完整路径,保存;
  4. 找到需要的project,选择Configure > Add build step,选sbt,选择刚才配好的sbt-launch.jar,JVM Flags 填 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -Xss16M ,action用 package 表示执行打包动作(隐含了更新编译等);
  5. Build Now

好了,正如你看到的,SBT其实并不难理解,配置也很简单清晰。有了这个打底,我们不再需要维护冗长的pom定义,有什么依赖一望便知,构建Scala和Java混合工程也不再是个需要专门关注的体力活。

转载:http://laogao.me/blog/2012/07/01/sbt-maven/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala是一种运行在Java虚拟机上的编程语言,具有面向对象和函数式编程的特性。要进行Scala的开发,首先需要配置好开发环境。 首先,需要安装Java开发工具包(JDK)。可以从Oracle官网下载并按照指示进行安装。安装完成后,可以通过在命令行中输入java -version来检查是否安装成功。 接下来,需要安装Scala编译器。可以从Scala官网下载并按照指示进行安装。完成后,同样可以通过在命令行中输入scala -version检查是否安装成功。 为了方便管理项目依赖和构建项目,可以选择使用sbt或者maven。下面分别介绍它们的配置教程。 对于sbt的配置,首先需要下载并安装sbt。可以从sbt官网下载并安装。安装完成后,可以在命令行中输入sbt来验证是否安装成功。 创建一个新项目时,需要在项目根目录中创建一个build.sbt文件。在该文件中,可以指定项目的名称、版本号、依赖项等信息。 对于maven的配置,首先需要下载并安装maven。可以从maven官网下载并安装。安装完成后,同样可以在命令行中输入mvn来验证是否安装成功。 创建一个新项目时,需要在项目根目录中创建一个pom.xml文件。在该文件中,可以指定项目的名称、版本号、依赖项等信息。 以上是关于Scala、sbtmaven的配置教程的简单介绍。具体的配置细节和更多使用方法,可以参考官方文档或者在线教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值