SpringBootCLI 命令行工具
Spring Boot CLI 是用于快速开发 Spring 应用的命令行工具。用来运行
Groovy
(与 Java 风格类似)脚本。
spring-cli 似乎不是可以各种diy spring-boot程序命令行参数、行为的工具,而是执行 groovy 脚本来快速达到一些效果。
版本
SpringBoot-2.2.0.RELEASE
安装
从官网下载 spring-cli
安装,然后将bin目录配置环境变量。
安装完成可通过 spring version
查看版本。
使用
用 CLI 运行应用
新建一个文件(如:hello.groovy),内容如下:
@RestController
class ThisWillActuallyRun{
@RequestMapping("/")
String home(){
"Hello World!"
}
}
运行命令:spring run hello.groovy
,第一次下载各种依赖比较慢,之后就会直接启动了。
此处示例使用默认端口启动一个web服务。
通过访问 http://127.0.0.1:8080/ 获取返回数据。
也可以运行命令:spring run hello.groovy -- --server.port=9000
来指定命令行参数。注意:要使用 --
来分隔命令和参数。
设置 JVM 命令行参数,可以用 JAVA_OPTS
环境变量,如下:
# linux
JAVA_OPTS=-Xmx1024m spring run hello.groovy
# windows
set "JAVA_OPTS=-Xms256m -Xmx2048m"
推断依赖
如:根据 @Controller
或 @RestController
或 @EnableWebMvc
推断出使用 Spring MVC + Embedded Tomcat
默认导包语句
为了简洁,许多导包语句会自动发生。
自动推导 main 方法
Groovy 脚本不像 java 应用需要包含 main 方法,SpringApplication
会自动创建,将你编译的代码作为资源执行。
自定义依赖管理
默认依赖管理声明在 spring-boot-dependencies
中,可通过 @DependencyManagementBom
配置,注解的值需要指定的值满足表达式:groupId:artifactId:version
@DependencyManagementBom("io.spring.platform:platform-bom:1.1.2.RELEASE")
@DependencyManagementBom(["com.example:custom-bom:1.0.0","com.example:another-bom:1.0.0"])
运行多个资源文件
spring run *.groovy
打包应用
spring java my-app.jar *.groovy
生成的jar包含编译应用程序生成的类和应用程序的所有依赖项,以便可以使用java-jar运行它。jar文件还包含来自应用程序类路径的条目。可以使用 --include
和 --exclude
添加和删除打包到jar的显式路径。
默认包含的资源如下:
public/**, resources/**, static/**, templates/**, META-INF/**, *
默认排除的如下:
.*, repository/**, build/**, target/**, **/*.jar, **/*.groovy
初始化新项目
init
命令允许你不必离开shell工具而直接使用 start.spring.io 创建一个新项目,如下例所示:
# 项目名为 my-project
$ spring init --dependencies=web,data-jpa my-project
Using service at https://start.spring.io
Project extracted to '/Users/developer/example/my-project
上述示例创建了一个 my-project
的 Maven 工程,使用 spring-boot-starter-web
和 spring-boot-starter-data-jpa
。可以使用 --list
标志列出服务的功能。如下:
$ spring init --list
=======================================
Capabilities of https://start.spring.io
=======================================
Available dependencies:
-----------------------
actuator - Actuator: Production ready features to help you monitor and manage your application
...
web - Web: Support for full-stack web development, including Tomcat and spring-webmvc
websocket - Websocket: Support for WebSocket development
ws - WS: Support for Spring Web Services
Available project types:
------------------------
gradle-build - Gradle Config [format:build, build:gradle]
gradle-project - Gradle Project [format:project, build:gradle]
maven-build - Maven POM [format:build, build:maven]
maven-project - Maven Project [format:project, build:maven] (default)
init
命令支持很多操作,具体的通过 help
命令查看。如下示例为创建一个使用 Java 8、打包成 war 的 Gradle 工程
$ spring init --build=gradle --java-version=1.8 --dependencies=websocket --packaging=war sample-app.zip
Using service at https://start.spring.io
Content saved to 'sample-app.zip'
使用切入式 Shell
SpringBoot 包含 BASH 和 zsh shells 的命令行完整脚本。如果不需使用它们(使用windows系统),你可以用 shell
命令启动集成的shell,如下:
$ spring shell
Spring Boot (v2.2.0.RELEASE)
Hit TAB to complete. Type \'help' and hit RETURN for help, and \'exit' to quit.
使用嵌入式 shell,可以直接使用其他命令:
$ version
Spring CLI v2.2.0.RELEASE
嵌入式 shell 支持 ANSI 颜色输出和 tab
提示。如果需要运行原生命令,可以使用 !
前缀,退出嵌入式 shell,使用 ctrl-c
。
添加扩展
使用 install
命令添加扩展。接受的扩展格式为:group:artifact:version
,如下:
$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE
除了安装你需要的目标依赖,它的所有依赖项也会安装。
使用 uninstall
命令卸载依赖。使用方式与 install
一样。
它卸载目标依赖,以及目标的所有依赖项。
卸载所有扩展依赖,可使用:
$ spring uninstall --all
使用 Groovy Beans DSL 开发应用
spring 框架 4.0 就已经对 DSL 原生支持。在 Grooby 应用中可以用相同的格式使用bean定义。
用 settings.xml 配置 CLI
Spring Boot CLI 使用Aether(Maven的依赖项解析引擎)解析依赖项。CLI 使用~/.m2/settings.xml中的maven配置来配置Aether。CLI遵循以下配置:
- Offline
- Mirrors
- Servers
- Proxies
- Profiles
- Activation
- Repositories
- Active profiles
参考文档
SpringBoot 官方文档
公众号:逸飞兮(专注于 Java 领域知识的深入学习,从源码到原理,系统有序的学习)
SpringBootCLI 命令行工具的更多相关文章
- windows下的命令行工具babun
什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...
- 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...
- 命令行工具aspnet_regiis.exe实现加密和解密web.config
命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...
- nodejs 编写(添加时间戳)命令行工具 timestamp
Nodejs除了编写服务器端程序还可以编写命令行工具,如gulp.js就是Nodejs编写的. 接下来我们来实现一个添加时间戳的命令: $ timestamp action https://www.n ...
- 如何用Node编写命令行工具
0. 命令行工具 当全局安装模块之后,我们可以在控制台下执行指定的命令来运行操作,如果npm一样.我把这样的模块称之为命令行工具模块(如理解有偏颇,欢迎指正) 1.用Node编写命令行工具 在Node ...
- Orchard中的命令行工具
在Orchard中提供了一个命令行工具,我们可以使用这个命令行工具创建用户.创建博客.生成代码.配置网站.打包模块等.并且这个命令行工具是可以扩充的,只要我们在自己开发的模块中创建一个Command类 ...
- Linux 性能监控之命令行工具
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
- 命令行工具解析Crash文件,dSYM文件进行符号化
备份 文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...
- MySQL 命令行工具之 mysqldump 深入研究
mysqldump 是MySQL的一个命令行工具,用于逻辑备份.可以将数据库和表的结构,以及表中的数据分别导出成:create database, create table, insert into的 ...
随机推荐
- iSCSI 网关管理 - Storage6
iSCSI网关集成了Ceph存储和iSCSI标准,以提供一个高可用性(HA) iSCSI目标,该目标将RADOS块设备(RBD)映像导出为SCSI磁盘.iSCSI协议允许客户机 (initiator) ...
- JS 生成唯一值UUID
md5加密new Date()生成的值可能不是唯一的,另一种生成唯一值的方式: getUID: function() { // 获取唯一值 return 'xxxxxxxx-xxxx-4xxx-yxx ...
- laravel基础操作手册
laravel基础操作手册 1.路由配置 测试配置路由: Route::get('/test', 'TestController@index'); 2.控制器书写 3.模型文件 4.增加扩展类文件 L ...
- Java 学习笔记之 Synchronized锁对象
Synchronized锁对象: Synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁,哪个线程执行带synchronized关键字的方法,哪个线程就持有该方法所属对象的锁,那么其 ...
- JVM(四)类加载机制
1.静态绑定和动态绑定 静态绑定:即前期绑定,在程序执行前方法已经被绑定,此时由编译器或者其他连接程序实现,针对Java,可以理解为编译期的绑定,java中只有final.static.private ...
- Java容器总结
容器总结 Java容器工具包框架图 List,Set,Map三者的区别 List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性 ...
- 《java编程思想》P140-P160(第七章复部+第八章部分)
1.不用修饰符 修饰的方法或类,它们的修饰符是 默认修饰符,即 包访问权限(包内都可以用)(临时记的) 2. final数据: 对于基本类型,final使数值恒定不变,而对于对象引用,final使引用 ...
- Jmeter结构体系及运行顺序
一:jmeter运行原理: jmeter时以线程的方式来运行的(由于jmeter是java开发的所以是运行在JVM虚拟机上的,java也是支持多线程的) 二:jmeter结构体系 1.取样器smapl ...
- SpringBoot系列教程web篇之过滤器Filter使用指南扩展篇
前面一篇博文介绍了在 SpringBoot 中使用 Filter 的两种使用方式,这里介绍另外一种直接将 Filter 当做 Spring 的 Bean 来使用的方式,并且在这种使用方式下,Filte ...
- MyEclipse10 使用JRebel实现热部署
MyEclipse10 使用JRebel实现热部署 Window --Preferences-Tomcat 6.x-JDK-JVM -noverify -javaagent:D:\JRebel\jre ...