我们先来看看从这个简单的buildfile中,我们可以得到什么。
分模块项目
这个大连协同办公软件项目里有两个子项目:domain和web。从架构的角度来看,一个项目从一开始就划分出这样的模块有两个好处。
• 给未来扩展留下接口,比如要提供一个Web Service,我们可以从domain 部分开始。
• 给大连工业互联网应用软件开发人员一个好的规划,有助于引导他们思考程序的模块化,降低代码的耦合度。
使用Buildr划分模块是非常简单的,只要在buildfile里声明模块,项目的根目录下同名的子目录就是对应的模块。
致远服软认为:http://www.soft8.com.cn/虽然在 buildfile 没有直接体现出来,但这里有个缺省的文件布局。一个统一的规则省去了我们从头规划的苦恼。遵循缺省的布局规则,Buildr自己就会找到相应的文件,进行处理。
这个布局规则实际上就是Maven的布局规则,如图所示,两个子项目都拥有自己的目录,其结构基本一致。
• src/main/java(源代码文件目录)
• src/main/resources(资源文件目录)
• src/test/java(测试代码目录)
• src/main/webapp(web 相关文件目录)
此外,这里还有稍后会提及的以下两个目录。
• profiles.yaml(环境相关的配置)
• tasks(自定义任务的目录)
这就是所谓的Convention over Configuration。当然,buildr 是支持自定义文件布局的,详情请参见文档。
基本命令
有了这个基本的buildfile,我们就可以开展日常的工作了。buildr自身支持很多命令,比如以下几点。
• buildr compile(编译项目)
• buildr package(项目打包)
• buildr test(运行测试)
想要了解更多的命令,我们可以运行下面的命令。
buildr -T
测试
在大连工业互联网应用软件测试都不好意思自称程序员的年代,测试,尤其实现级别的测试,诸如单元测试、集成测试,已经成了程序员的常规武器。
诚如上面所见,src/test/java 就是我们的测试文件存放的目录。对于 Java 项目,JUnit 是缺省的配置,只要在这个目录下的Java 类继承自junit.framework.TestCase(JUnit 3),或是在类上标记了org.junit.runner.RunWith,抑或在方法上标记了org.junit.Test(JUnit 4)。Buildr 就会找到它们并帮我们料理好编译运行等事宜。约定的力量让我们无需操心这一切。
依赖管理
依赖管理一直是一项令人头疼的问题,也是让许多开发人员搭建纠结于开发环境搭建的一个重要因素。
各种语言的社区分别给出了自己的依赖管理解决方案。对于Java社区而言,一种比较成熟的解决方案来自于Maven。它按照一定规则建立起一个庞大的中央仓库,成熟的大连工业互联网应用软件数据库都会在其中有一席之地。