Spring Boot CLI 是用於快速開發 Spring 應用的命令行工具。用來運行
Groovy
(與 Java 風格相似)腳本。html
spring-cli 彷佛不是能夠各類diy spring-boot程序命令行參數、行爲的工具,而是執行 groovy 腳原本快速達到一些效果。java
SpringBoot-2.2.0.RELEASElinux
從官網下載 spring-cli
安裝,而後將bin目錄配置環境變量。安裝完成可經過 spring version
查看版本。web
新建一個文件(如:hello.groovy),內容以下:spring
@RestController
class ThisWillActuallyRun{
@RequestMapping("/")
String home(){
"Hello World!"
}
}複製代碼
運行命令:spring run hello.groovy
,第一次下載各類依賴比較慢,以後就會直接啓動了。此處示例使用默認端口啓動一個web服務。經過訪問 http://127.0.0.1:8080/ 獲取返回數據。shell
也能夠運行命令:spring run hello.groovy -- --server.port=9000
來指定命令行參數。注意:要使用 --
來分隔命令和參數。windows
設置 JVM 命令行參數,能夠用 JAVA_OPTS
環境變量,以下:websocket
# linux
JAVA_OPTS=-Xmx1024m spring run hello.groovy複製代碼
# windows
set "JAVA_OPTS=-Xms256m -Xmx2048m"複製代碼
如:根據 @Controller
或 @RestController
或 @EnableWebMvc
推斷出使用 Spring MVC + Embedded Tomcat
mvc
爲了簡潔,許多導包語句會自動發生。app
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 八、打包成 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'複製代碼
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複製代碼
spring 框架 4.0 就已經對 DSL 原生支持。在 Grooby 應用中能夠用相同的格式使用bean定義。
Spring Boot CLI 使用Aether(Maven的依賴項解析引擎)解析依賴項。CLI 使用~/.m2/settings.xml中的maven配置來配置Aether。CLI遵循如下配置:
SpringBoot 官方文檔公衆號:逸飛兮(專一於 Java 領域知識的深刻學習,從源碼到原理,系統有序的學習)