Spring Boot CLI命令行工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot CLI命令行工具相关的知识,希望对你有一定的参考价值。

Spring Boot CLI 是一个命令行工具,如果您想快速开发 Spring 应用程序,可以使用它。它允许您运行 Groovy 脚本,这意味着您拥有熟悉的类似 Java 的语法,而无需太多样板代码。您还可以引导一个新项目或为其编写自己的命令。

Spring

1.安装命令行

可以使用 SDKMAN 手动安装 Spring Boot CLI(命令行界面)!(SDK 管理器)或使用 Homebrew 或 MacPorts(如果您是 OSX 用户)。有关全面的安装说明,请参阅“入门”部分中的​getting-started.html 。​

2. 使用命令行

安装 CLI 后,您可以通过​​spring​​在命令行中键入并按 Enter 来运行它。如果​​spring​​不带任何参数运行,则会显示帮助屏幕,如下所示:

$ spring
usage: spring [--help] [--version]
<command> [<args>]

Available commands are:

run [options] <files> [--] [args]
Run a spring groovy script

_... more command help is shown here_

您可以键入​​spring help​​以获取有关任何受支持命令的更多详细信息,如以下示例所示:

$ spring help run
spring run - Run a spring groovy script

usage: spring run [options] <files> [--] [args]

Option Description
------ -----------
--autoconfigure [Boolean] Add autoconfigure compiler
transformations (default: true)
--classpath, -cp Additional classpath entries
--no-guess-dependencies Do not attempt to guess dependencies
--no-guess-imports Do not attempt to guess imports
-q, --quiet Quiet logging
-v, --verbose Verbose logging of dependency
resolution
--watch Watch the specified file for changes

该​​version​​命令提供了一种快速检查您正在使用的 Spring Boot 版本的方法,如下所示:

$ spring version
Spring CLI v2.7.5

2.1使用 CLI 运行应用程序

您可以使用该​​run​​命令编译和运行 Groovy 源代码。Spring Boot CLI 是完全独立的,因此您不需要任何外部 Groovy 安装。

以下示例显示了一个用 Groovy 编写的“hello world”Web 应用程序:

你好.groovy

@RestController
class WebApplication

@RequestMapping("/")
String home()
"Hello World!"


要编译和运行应用程序,请键入以下命令:

$ spring run hello.groovy

要将命令行参数传递给应用程序,请使用​​--​​将命令与“spring”命令参数分开,如以下示例所示:

$ spring run hello.groovy -- --server.port=9000

要设置 JVM 命令行参数,可以使用​​JAVA_OPTS​​环境变量,如下例所示:

$ JAVA_OPTS=-Xmx1024m spring run hello.groovy

2.1.1推导出的“抓取”依赖项

标准 Groovy 包含一个​​@Grab​​注解,它允许您声明对第三方库的依赖关系。这种有用的技术可以让 Groovy 以与 Maven 或 Gradle 相同的方式下载 jar,但不需要您使用构建工具。

Spring Boot 进一步扩展了这项技术,并尝试根据您的代码推断要“抓取”哪些库。例如,由于​​WebApplication​​前面显示的代码使用​​@RestController​​注解,Spring Boot 抓取“Tomcat”和“Spring MVC”。

以下项目用作“抓取提示”:

项目


​JdbcTemplate​​​, ​​NamedParameterJdbcTemplate​​​,​​DataSource​

JDBC 应用程序。

​@EnableJms​

JMS 应用程序。

​@EnableCaching​

缓存抽象。

​@Test​

JUnit。

​@EnableRabbit​

兔MQ。

延伸​​Specification​

斯波克测试。

​@EnableBatchProcessing​

春季批次。

​@MessageEndpoint​​​ ​​@EnableIntegration​

弹簧集成。

​@Controller​​​ ​​@RestController​​​ ​​@EnableWebMvc​

Spring MVC + 嵌入式 Tomcat。

​@EnableWebSecurity​

春季安全。

​@EnableTransactionManagement​

春天事务管理。

2.1.2. 推导出的“抓取”坐标

Spring Boot 扩展了 Groovy 的标准​​@Grab​​​支持,允许您指定不带组或版本的依赖项(例如,​​@Grab(freemarker)​​)。这样做会参考 Spring Boot 的默认依赖元数据来推断工件的组和版本。

2.1.3默认导入语句

为了帮助减少 Groovy 代码的大小,​​import​​自动包含了一些语句。请注意前面的示例如何引用​​@Component​​、​​@RestController​​和 ,而​​@RequestMapping​​无需使用完全限定的名称或​​import​​语句。

2.1.4自动主方法

与等效的 Java 应用程序不同,您不需要在脚本中包含​​public static void main(String[] args)​​方法。​​Groovy​​A​​SpringApplication​​是自动创建的,您的编译代码充当​​source​​.

2.1.5自定义依赖管理

默认情况下,CLI 在​​spring-boot-dependencies​​解析​​@Grab​​依赖项时使用声明的依赖项管理。​​@DependencyManagementBom​​可以使用注解来配置覆盖默认依赖管理的附加依赖管理。注释的值应指定​​groupId:artifactId:version​​一个或多个 Maven BOM 的坐标 ( )。

例如,考虑以下声明:

@DependencyManagementBom("com.example.custom-bom:1.0.0")

前面的声明出现​​custom-bom-1.0.0.pom​​在 Maven 存储库中​​com/example/custom-versions/1.0.0/​​。

当您指定多个 BOM 时,它们将按照您声明它们的顺序应用,如以下示例所示:

@DependencyManagementBom([
"com.example.custom-bom:1.0.0",
"com.example.another-bom:1.0.0"])

前面的示例表明 中的依赖管理​​another-bom​​覆盖了 中的依赖管理​​custom-bom​​。

您可以在任何可以使用的​​@DependencyManagementBom​​地方使用​​@Grab​​。但是,为了确保依赖管理的顺序一致,您最多可以​​@DependencyManagementBom​​在应用程序中使用一次。

2.2. 具有多个源文件的应用程序

您可以对所有接受文件输入的命令使用“shell globbing”。这样做可以让您使用单个目录中的多个文件,如以下示例所示:

$ spring run *.groovy

2.3. 打包您的应用程序

您可以使用该​​jar​​命令将您的应用程序打包成一个自包含的可执行 jar 文件,如下例所示:

$ spring jar my-app.jar *.groovy

生成的 jar 包含通过编译应用程序生成的类以及应用程序的所有依赖项,因此它可以使用​​java -jar​​. jar 文件还包含来自应用程序类路径的条目。​​--include​​您可以使用和来添加和删除 jar 的显式路径​​--exclude​​。两者都是逗号分隔的,并且都接受前缀,以“+”和“-”的形式,表示它们应该从默认值中删除。默认包括如下:

公共/**、资源/**、静态/**、模板/**、META-INF/**、*

默认排除如下:

.*、存储库/**、构建/**、目标/**、**/*.jar、**/*.groovy

​spring help jar​​在命令行上键入以获取更多信息。

2.4. 初始化一个新项目

该​​init​​命令允许您在不离开 shell 的情况下使用start.spring.io创建一个新项目,如下例所示:

$ 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

2.5. 使用嵌入式外壳

Spring Boot 包括 BASH 和 zsh shell 的命令行完成脚本。如果您不使用这些 shell 中的任何一个(可能您是 Windows 用户),则可以使用该​​shell​​命令启动集成 shell,如下例所示:

$ spring shell
Spring Boot (v2.7.5)
Hit TAB to complete. Type \\help and hit RETURN for help, and \\exit to quit.

从嵌入式 shell 内部,您可以直接运行其他命令:

$ version
Spring CLI v2.7.5

嵌入式外壳支持 ANSI 颜色输出和​​tab​​补全。如果需要运行本机命令,可以使用​​!​​前缀。要退出嵌入式外壳,请按​​ctrl-c​​。

2.6. 向 CLI 添加扩展

您可以使用该​​install​​命令向 CLI 添加扩展。该命令采用格式为的一组或多组工件坐标​​group:artifact:version​​,如以下示例所示:

$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE

除了安装由您提供的坐标标识的工件外,还安装了所有工件的依赖项。

要卸载依赖项,请使用​​uninstall​​命令。与该​​install​​命令一样,它采用 格式的一组或多组工件坐标​​group:artifact:version​​,如以下示例所示:

$ spring uninstall com.example:spring-boot-cli-extension:1.0.0.RELEASE

它卸载由您提供的坐标及其依赖项标识的工件。

要卸载所有附加依赖项,您可以使用该​​--all​​选项,如以下示例所示:

$ spring uninstall --all

3. 使用 Groovy Beans DSL 开发应用程序

Spring Framework 4.0 原生支持​​beans​​“DSL”(借用自Grails),您可以使用相同的格式将 bean 定义嵌入到 Groovy 应用程序脚本中。这有时是包含中间件声明等外部功能的好方法,如下例所示:

@Configuration(proxyBeanMethods = false)
class Application implements CommandLineRunner

@Autowired
SharedService service

@Override
void run(String... args)
println service.message




beans
service(SharedService)
message = "Hello World"

您可以在同一个文件中混合类声明,​​beans​​只要它们保持在顶层,或者,如果您愿意,您可以将 beans DSL 放在一个单独的文件中。

4. 使用 settings.xml 配置 CLI

Spring Boot CLI 使用 Maven 的依赖解析引擎 Maven Resolver 来解析依赖。CLI 使用 Maven 配置​​~/.m2/settings.xml​​来配置 Maven 解析器。CLI 支持以下配置设置:

  • 离线
  • 镜子
  • 服务器
  • 代理
  • 简介
  • 激活
  • 存储库
  • 活动配置文件

以上是关于Spring Boot CLI命令行工具的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot CLI——centos7

新手必看,Spring Boot CLI 必会必知

Mac 安装Spring Boot CLI

SpringBoot快速开发利器:Spring Boot CLI

如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 工件

Spring Boot的环境搭建