2

Spring Boot CLI命令行工具

 1 year ago
source link: https://blog.51cto.com/u_15326439/5852049
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

Spring Boot CLI命令行工具_maven

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​

延伸​​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 支持以下配置设置:

  • 活动配置文件

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK