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-webspring-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 領域知識的深入學習,從源碼到原理,系統有序的學習)

逸飛兮


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM