Spring Boot CLI命令行工具
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.
Spring Boot CLI 是一个命令行工具,如果您想快速开发 Spring 应用程序,可以使用它。它允许您运行 Groovy 脚本,这意味着您拥有熟悉的类似 Java 的语法,而无需太多样板代码。您还可以引导一个新项目或为其编写自己的命令。
1.安装命令行
可以使用 SDKMAN 手动安装 Spring Boot CLI(命令行界面)!(SDK 管理器)或使用 Homebrew 或 MacPorts(如果您是 OSX 用户)。有关全面的安装说明,请参阅“入门”部分中的getting-started.html 。
2. 使用命令行
安装 CLI 后,您可以通过spring
在命令行中键入并按 Enter 来运行它。如果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 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 CLI v2.7.5
2.1使用 CLI 运行应用程序
您可以使用该run
命令编译和运行 Groovy 源代码。Spring Boot CLI 是完全独立的,因此您不需要任何外部 Groovy 安装。
以下示例显示了一个用 Groovy 编写的“hello world”Web 应用程序:
你好.groovy
class WebApplication {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
要编译和运行应用程序,请键入以下命令:
要将命令行参数传递给应用程序,请使用--
将命令与“spring”命令参数分开,如以下示例所示:
要设置 JVM 命令行参数,可以使用JAVA_OPTS
环境变量,如下例所示:
2.1.1推导出的“抓取”依赖项
标准 Groovy 包含一个@Grab
注解,它允许您声明对第三方库的依赖关系。这种有用的技术可以让 Groovy 以与 Maven 或 Gradle 相同的方式下载 jar,但不需要您使用构建工具。
Spring Boot 进一步扩展了这项技术,并尝试根据您的代码推断要“抓取”哪些库。例如,由于WebApplication
前面显示的代码使用@RestController
注解,Spring Boot 抓取“Tomcat”和“Spring MVC”。
以下项目用作“抓取提示”:
| JDBC 应用程序。 |
| JMS 应用程序。 |
| 缓存抽象。 |
| JUnit。 |
| |
延伸 | 斯波克测试。 |
| 春季批次。 |
| 弹簧集成。 |
| Spring MVC + 嵌入式 Tomcat。 |
| 春季安全。 |
| 春天事务管理。 |
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
ASpringApplication
是自动创建的,您的编译代码充当source
.
2.1.5自定义依赖管理
默认情况下,CLI 在spring-boot-dependencies
解析@Grab
依赖项时使用声明的依赖项管理。@DependencyManagementBom
可以使用注解来配置覆盖默认依赖管理的附加依赖管理。注释的值应指定groupId:artifactId:version
一个或多个 Maven BOM 的坐标 ( )。
例如,考虑以下声明:
前面的声明出现custom-bom-1.0.0.pom
在 Maven 存储库中com/example/custom-versions/1.0.0/
。
当您指定多个 BOM 时,它们将按照您声明它们的顺序应用,如以下示例所示:
"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”。这样做可以让您使用单个目录中的多个文件,如以下示例所示:
2.3. 打包您的应用程序
您可以使用该jar
命令将您的应用程序打包成一个自包含的可执行 jar 文件,如下例所示:
生成的 jar 包含通过编译应用程序生成的类以及应用程序的所有依赖项,因此它可以使用java -jar
. jar 文件还包含来自应用程序类路径的条目。--include
您可以使用和来添加和删除 jar 的显式路径--exclude
。两者都是逗号分隔的,并且都接受前缀,以“+”和“-”的形式,表示它们应该从默认值中删除。默认包括如下:
默认排除如下:
spring help jar
在命令行上键入以获取更多信息。
2.4. 初始化一个新项目
该init
命令允许您在不离开 shell 的情况下使用start.spring.io创建一个新项目,如下例所示:
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
,如以下示例所示:
=======================================
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 项目:
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 Boot (v2.7.5)
Hit TAB to complete. Type \'help' and hit RETURN for help, and \'exit' to quit.
从嵌入式 shell 内部,您可以直接运行其他命令:
Spring CLI v2.7.5
嵌入式外壳支持 ANSI 颜色输出和tab
补全。如果需要运行本机命令,可以使用!
前缀。要退出嵌入式外壳,请按ctrl-c
。
2.6. 向 CLI 添加扩展
您可以使用该install
命令向 CLI 添加扩展。该命令采用格式为的一组或多组工件坐标group:artifact:version
,如以下示例所示:
除了安装由您提供的坐标标识的工件外,还安装了所有工件的依赖项。
要卸载依赖项,请使用uninstall
命令。与该install
命令一样,它采用 格式的一组或多组工件坐标group:artifact:version
,如以下示例所示:
它卸载由您提供的坐标及其依赖项标识的工件。
要卸载所有附加依赖项,您可以使用该--all
选项,如以下示例所示:
3. 使用 Groovy Beans DSL 开发应用程序
Spring Framework 4.0 原生支持beans{}
“DSL”(借用自Grails),您可以使用相同的格式将 bean 定义嵌入到 Groovy 应用程序脚本中。这有时是包含中间件声明等外部功能的好方法,如下例所示:
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 支持以下配置设置:
- 活动配置文件
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK