通常我们要创建一个 sbt 项目需要经历以下几步:
$ mkdir testscala && cd testscala #创建项目目录 testscala,并进入该目录
testscala $ mkdir -p src/{main,test}/scala #创建源文件目录结构,可能还需要 mkdir -p src/{main,test}/resources
$ vi build.sbt # 填入基本的信息 (name, organization, version)
$ sbt
这一看怎么这么复杂啊,特别是习惯了 Maven 的同学们更会这么觉得。Maven 不仅可应用各种模板来创建不同类型的工程,完整的工程目录结构都有了。
那么 sbt 能不能做到自动创建目录和配置文件呢,答案是: 本身不能。你可以基于一个项目模板目录结构拷来拷去。前面说是 sbt 本身不能,要知道 sbt 是一个插件化更彻底的玩意,如今的 0.12.2 的 sbt.zip 才 1M 大小,其余全赖插件帮你插来插去了。
因此,我们找来的 np(New Project) 插件 https://github.com/softprops/np 帮我们创建工程的目录结构和 build.sbt 文件。它能让我们创建项目的过程简化为以下两步操作:
$ mkdir testscala && cd testscala #这一步还是不能少
$ sbt
> np name:testscala org:cc.unmi #这样 testscala 下 {main.test}/{scala,resources} 和 build.sbt 文件都有了
np 的安装及使用可以参考:https://github.com/softprops/np,就是下面的步骤:
np 的安装
第一步:运行过 sbt 后,一般会有目录 ~/.sbt,你要在 ~/.sbt/plugins/build.sbt 文件中添加(如果没有该文件则创建它):
1 2 3 4 5 |
addSbtPlugin("me.lessis" % "np" % "0.2.0") resolvers += Resolver.url("sbt-plugin-releases", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))( Resolver.ivyStylePatterns) |
第二步:为了让 sbt 构建系统认识 np 指令,你还需要在全局的 .sbt 文件中,比如可以创建文件 ~/.sbt/np.sbt,内容如下:
1 |
seq(npSettings: _*) |
使用 np 插件
在就可以用前面介绍的命令来创建 sbt 项目了:
$ mkdir testscala && cd testscala #这一步还是不能少
$ sbt
> np name:testscala org:cc.unmi #这样 testscala 下 {main.test}/{scala,resources} 和 build.sbt 文件都有了
在对于第二步,如果你想给 np 指定默认的参数,比如 org, version,以后命令可更简单化为 np name:testscala,可以在 ~/.sbt/np.sbt 中代之以如下的如容:
1 2 3 4 5 |
seq(npSettings:_*) (NpKeys.defaults in (Compile, NpKeys.np)) ~= { _.copy(org="cc.unmi", version="0.1.0-SNAPSHOT") } |
用 np 生成子项目,也没问题:
np name:my-sub-project dir:sub-project-dir
np 可用的选项有 name, org, version, plugin 和 dir,它们用 key:value 的方式来指定选项值。
最后,别忘了看看官方的权威帮助,就在 https://github.com/softprops/np, 不要怕英文。
本文链接 https://yanbin.blog/sbt-np-create-folders-build-sbt/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。