26、Spring Boot CLI 命令使用指南

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 的开发之路上更加得心应手。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值