Spring Boot CLI 命令使用指南
Spring Boot 允许你选择 Java 或 Groovy 轻松创建企业级和生产就绪的应用程序。下面将详细介绍 Spring Boot CLI 的各种命令。
1. run 命令
run 命令用于运行 Java 或 Groovy 的 Spring Boot 应用程序,其语法如下:
spring run [options] <files> [--] [args]
可用选项如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
| -q, –quiet | 静默日志记录,即不会在控制台打印任何内容 |
| -v, –verbose | 记录所有内容,有助于查看代码内部情况 |
| –watch | 监控文件更改,当你不想停止并重新运行应用程序时很有用 |
以下是一些使用示例:
- 运行 Groovy 应用程序:
$ spring run app.groovy
默认情况下,该命令会启动一个 Web 应用程序并监听 8080 端口,你可以通过以下命令覆盖默认端口:
$ spring run app.groovy -- --server.port=8888
如果你想添加第三方库并加载依赖项,可以执行:
$ spring run -cp lib/mylib.jar app.groovy
- 运行 Java 应用程序:
$ spring run WebApp.java
注意:你可以通过按键盘上的 Ctrl+C 停止应用程序。如果你运行的是 Java 应用程序,添加 package 关键字很重要。
如果你有多个文件,可以使用通配符 * 来编译所有文件:
$ spring run *.groovy
如果你需要调整 JVM 及其选项,可以执行以下命令:
$ JAVA_OPTS=-Xmx2g spring run app.groovy
该命令将 app.groovy 应用程序的内存堆增加到 2GB。
2. test 命令
test 命令用于运行 Spring Groovy 脚本和 Java 测试,其语法如下:
spring test [options] files [--] [args]
可用选项如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
以下是一些测试示例:
- 简单的 JUnit 测试(test.groovy):
class MyTest{
@Test
void simple() {
String str= "JUnit works with Spring Boot"
assertEquals "JUnit works with Spring Boot",str
}
}
运行该测试:
$ spring test test.groovy
- Spock 单元测试(spock.groovy):
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
import spock.lang.Specification
import org.springframework.boot.test.OutputCapture
class SimpleSpockTest extends Specification {
@org.junit.Rule
OutputCapture capture = new OutputCapture()
def "get output and capture it"() {
when:
print 'Spring Boot works with Spock'
then:
capture.toString() == 'Spring Boot works with Spock'
}
}
运行该测试:
$ spring test spock.groovy
- Java 单元测试(MyTest.java):
import org.junit.Rule;
import org.junit.Test;
import org.springframework.boot.test.OutputCapture;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
public class MyTest {
@Rule
public OutputCapture capture = new OutputCapture();
@Test
public void stringTest() throws Exception {
System.out.println("Spring Boot Test works in Java too!");
assertThat(capture.toString(), containsString("Spring Boot Test works in Java too!"));
}
}
运行该测试:
$ spring test MyTest.java
如果你想测试 app.groovy 网络应用程序,可以创建以下代码(test.groovy):
class SimpleWebTest {
@Test
void greetingsTest() {
assertEquals("Spring Boot Rocks", new WebApp().greetings())
}
}
运行测试:
$ spring test app.groovy test.groovy
3. grab 命令
grab 命令用于将所有 Spring Groovy 脚本和 Java 依赖项下载到 ./repository 目录,其语法如下:
spring grab [options] files [--] [args]
可用选项与 run 和 test 命令的部分选项类似,如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
使用示例:
$ spring grab MyTest.java
执行该命令后,你可以在当前目录中看到创建的 repository 子目录,其中包含所有依赖项。
4. jar 命令
jar 命令用于从 Groovy 或 Java 脚本创建自包含的可执行 JAR 文件,其语法如下:
spring jar [options] <jar-name> <files>
可用选项如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –exclude | 查找文件的模式,并将其从最终的 JAR 文件中排除 |
| –include | 查找文件的模式,并将其包含在最终的 JAR 文件中 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
使用示例:
$ spring jar app.jar app.groovy
执行该命令后,你会在当前目录中看到两个文件:app.jar.original 和 app.jar。你可以使用以下命令运行生成的 JAR 文件:
$ java -jar app.jar
5. war 命令
war 命令用于从 Groovy 或 Java 脚本创建自包含的可执行 WAR 文件,其语法如下:
spring war [options] <war-name> <files>
可用选项与 jar 命令类似,如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –exclude | 查找文件的模式,并将其从最终的 WAR 文件中排除 |
| –include | 查找文件的模式,并将其包含在最终的 WAR 文件中 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
使用示例:
$ spring war app.war app.groovy
执行该命令后,你可以在当前目录中看到 app.war.original 和 app.war 文件。你可以使用以下命令运行生成的 WAR 文件:
$ java -jar app.war
WAR 文件可以在现有的应用程序容器(如 Pivotal tcServer、Tomcat、WebSphere、Jetty 等)中使用。
6. install 命令
install 命令用于安装指定的库及其依赖项到 lib 目录,其语法如下:
spring install [options] <coordinates>
可用选项与前面的命令类似,如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
使用示例:
$ spring install org.spockframework:spock-core:1.0-groovy-2.4
执行该命令后,你会在 lib 目录中看到 Spock 库及其依赖项。
7. uninstall 命令
uninstall 命令用于从 lib 目录中卸载依赖项,其语法如下:
spring uninstall [options] <coordinates>
可用选项与 install 命令相同,如下表所示:
| Option | Description |
| — | — |
| –autoconfigure [Boolean] | 添加自动配置编译器转换,默认值为 true |
| –classpath, -cp | 添加类路径条目,当你有第三方库时很有用 |
| –no-guess-dependencies | 不尝试猜测依赖项,当你已经在应用程序中使用 @Grab 注解时很有用 |
| –no-guess-imports | 不尝试猜测导入项,当你已经在 Groovy 应用程序中包含了一些导入项时很有用 |
使用示例:
$ spring uninstall org.spockframework:spock-core:1.0-groovy-2.4
该命令将从 lib 目录中移除所有 Spock 依赖项。
8. init 命令
init 命令用于使用 Spring Initializr(http://start.spring.io/)初始化一个新的项目,其语法如下:
spring init [options] [location]
可用选项如下表所示:
| Option | Description |
| — | — |
| -a, –artifactId | 项目坐标,如果未提供,默认名称为 demo |
| -b, –boot-version | Spring Boot 版本,如果未提供,将获取最新版本 |
| –build | 要使用的构建系统,可能的值为 maven 或 gradle,默认值为 maven |
| -d, –dependencies | 包含的依赖项标识符的逗号分隔列表,例如 -d=web 或 -d=web,jdbc,actuator |
| –description | 项目描述 |
| -f, –force | 覆盖现有文件 |
| –format | 生成内容的格式,可能的值为 build 和 project,默认值为 project |
| -g, –groupId | 定义组 ID 的项目坐标,如果未提供,默认值为 com.example |
| -j, –java-version | 语言级别,如果未提供,默认值为 1.8 |
| -l, –language | 指定编程语言,可能的值为 java 和 groovy,默认值为 java |
| -n, –name | 应用程序的名称,如果未提供,默认值为 demo |
| -p, –packaging | 项目打包方式,值为 jar、war 和 zip,如果未提供,将生成一个 ZIP 文件 |
| –package-name | 包名,如果未提供,默认值为 demo |
| -t, –type | 项目类型,值为 maven-project、maven-build、gradle-project 和 gradle-build,默认值为 maven-project |
| –target | 要使用的服务的 URL,默认值为 https://start.spring.io |
| -v, –version | 项目版本,如果未提供,默认值为 0.0.1-SNAPSHOT |
| -x, –extract | 如果未指定位置,将在当前目录中提取创建的项目内容 |
以下是一个创建默认项目的示例:
$ spring init
该命令将生成一个 demo.zip 文件,你可以解压并查看其结构(Maven 项目结构)。
综上所述,Spring Boot CLI 的这些命令为开发人员提供了便捷的方式来创建、运行、测试和打包 Spring Boot 应用程序。通过合理使用这些命令,你可以更高效地进行 Spring Boot 开发。
Spring Boot CLI 命令使用指南(续)
命令使用流程总结
为了更清晰地展示各个命令的使用流程,下面给出一个 mermaid 流程图:
graph TD;
A[开始] --> B{选择操作};
B -->|运行应用| C[run 命令];
B -->|测试应用| D[test 命令];
B -->|下载依赖| E[grab 命令];
B -->|创建 JAR| F[jar 命令];
B -->|创建 WAR| G[war 命令];
B -->|安装库| H[install 命令];
B -->|卸载库| I[uninstall 命令];
B -->|初始化项目| J[init 命令];
C --> C1[选择文件和选项];
C1 --> C2[运行应用];
D --> D1[选择测试文件和选项];
D1 --> D2[运行测试];
E --> E1[选择文件和选项];
E1 --> E2[下载依赖到 repository 目录];
F --> F1[选择文件和选项及 JAR 名称];
F1 --> F2[创建 JAR 文件];
G --> G1[选择文件和选项及 WAR 名称];
G1 --> G2[创建 WAR 文件];
H --> H1[选择库坐标和选项];
H1 --> H2[安装库到 lib 目录];
I --> I1[选择库坐标和选项];
I1 --> I2[从 lib 目录卸载库];
J --> J1[选择选项和位置];
J1 --> J2[初始化项目];
C2 --> K[结束];
D2 --> K;
E2 --> K;
F2 --> K;
G2 --> K;
H2 --> K;
I2 --> K;
J2 --> K;
不同场景下的命令选择
在实际开发中,我们会遇到各种不同的场景,下面为你列举一些常见场景及对应的命令选择:
| 场景 | 适用命令 | 说明 |
| — | — | — |
| 快速启动应用进行开发调试 | run 命令 | 可以直接运行 Java 或 Groovy 应用,支持动态修改代码和自动重启(使用 –watch 选项) |
| 对应用进行单元测试 | test 命令 | 支持 JUnit 和 Spock 等测试框架,方便进行各种类型的测试 |
| 离线部署应用 | grab 命令 | 提前下载好所有依赖到本地,确保在没有网络的环境下也能正常运行应用 |
| 打包应用进行发布 | jar 命令或 war 命令 | jar 命令生成的 JAR 文件可独立运行,war 命令生成的 WAR 文件可部署到现有的应用程序容器中 |
| 管理第三方库 | install 命令和 uninstall 命令 | install 命令用于安装第三方库及其依赖,uninstall 命令用于卸载不再需要的库 |
| 初始化新项目 | init 命令 | 借助 Spring Initializr 快速搭建项目结构,配置好基本的依赖和设置 |
注意事项
在使用 Spring Boot CLI 命令时,还需要注意以下几点:
1.
依赖管理
:当使用第三方库时,建议创建一个 lib/ 文件夹,并使用 –classpath 或 -cp 选项添加类路径条目。同时,如果已经在应用程序中使用了 @Grab 注解,建议使用 –no-guess-dependencies 选项,避免重复猜测依赖项。
2.
Java 应用的 package 关键字
:在运行 Java 应用时,一定要添加 package 关键字,否则 Spring Boot 无法扫描到所有可用的依赖,导致应用无法正常运行。
3.
文件覆盖
:使用 init 命令时,如果使用 -f, –force 选项,会覆盖现有文件,请谨慎操作。
4.
SDKMAN 工具
:如果你使用 SDKMAN 工具(http://sdkman.io/),install 命令会将库下载到 $HOME/.sdkman/candidates/springboot/1.3.X.RELEASE/lib 目录。
通过掌握 Spring Boot CLI 的这些命令及其使用方法,你可以更加高效地进行 Spring Boot 应用的开发、测试和部署。无论是初学者还是有经验的开发者,合理运用这些命令都能大大提升开发效率,让你在 Spring Boot 的开发之路上更加得心应手。
超级会员免费看
1220

被折叠的 条评论
为什么被折叠?



