创建可部署的产物
在基于 Maven 和 Gradle 的传统 Java 项目中,构建系统负责产生部署单元——一般是 JAR 文件或 WAR 文件。然而,有了 Spring Boot CLI,我们可以简单地通过 spring 命令在命令行里运行应用程序。
这是否就意味着要部署一个 Spring Boot CLI 应用程序,必须在服务器上安装 CLI,并手工在命令行里启动应用程序呢?在部署生产环境时,这看起来相当不方便(不用说,这还很危险)。
在第 8 章里我们会讨论更多部署 Spring Boot 应用程序的方法。此刻,让我告诉你另一个 CLI 窍门。针对基于 CLI 的阅读列表应用程序,在命令行执行如下命令:
$ spring jar ReadingList.jar .
这会将整个项目打包成一个可执行的JAR文件,包含所有依赖、Groovy 和一个嵌入式 Tomcat。打包完成后,就可以像下面这样在命令行里运行了(无需 CLI):
$ java -jar ReadingList.jar
除了可以在命令行里运行外,可执行的 JAR 文件也能部署到多个平台服务器(Platform as a Service, PaaS)云平台里,包括 Pivotal Cloud Foundry 和 Heroku,在第 8 章里你会看到相关内容。
小结
Spring Boot CLI 利用了 Spring Boot 自动配置和起步依赖的便利之处,并将其发扬光大。借由 Groovy 语言的优雅,CLI 能让我们在最少的代码噪声下开发 Spring 应用程序。
本章中我们彻底重写了第 2 章里的阅读列表应用程序,只是这次我们用 Groovy 把它写成了 Spring Boot CLI 应用程序。通过自动添加很多常用包和类的 import 语句,CLI 让 Groovy 更优雅。它还可以自动解析很多依赖库。
对于 CLI 无法自动解析的库,基于 CLI 的应用程序可以利用 Grape 的 @Grab 注解,不用构建说明也能显式地声明依赖。Spring Boot 的 CLI 扩展了 @Grab 注解,针对很多常用库依赖,只需声明 Module ID 就可以了。
最后,你还了解了如何用 Spring Boot CLI 来执行测试和构建可部署产物,这些通常都是由构建系统来负责的。
Spring Boot 和 Groovy 结合得很好,两者的简洁性相辅相成。在第 6 章,我们还会看到 Spring Boot 和 Groovy 是如何协同的——Spring Boot 是 Grails 最新版本的核心。