创建新项目

spring boot new 命令让创建 Spring Boot 应用程序变得轻而易举。spring-doc.cadn.net.cn

此命令从现有功能完整的 Spring Boot 应用程序的源代码仓库中复制内容,以创建新项目。spring-doc.cadn.net.cn

要开始使用,请指定 --name 选项,该选项会创建一个包含测试的基本 RESTful Web 应用程序。 您也可以使用 --from 选项创建具有不同功能的项目,例如 Spring Data JPA 或 Spring Cloud Stream。spring-doc.cadn.net.cn

为了进一步定制,您可以灵活指定各种选项(例如 --group--artifact-id--version),以及 --package-name--description。 如果您提供 --package-name,代码将在克隆源代码仓库后进行重构。spring-doc.cadn.net.cn

以下部分提供了对这些主题中每一个的详细解释。spring-doc.cadn.net.cn

有关向现有应用程序添加更多代码的更多信息,请参阅 Spring Boot 添加用户自定义命令spring-doc.cadn.net.cn

快速开始

若要在一个新目录中快速创建一个简单的 Web 应用程序,请运行以下命令:spring-doc.cadn.net.cn

spring boot new my-app
cd my-app
./mnvw spring-boot:run

这将在 my-app 目录中创建一个基本的 Web 应用程序。 在此示例中,--name 选项按位置传递,等同于 spring boot new --name my-appspring-doc.cadn.net.cn

如果您希望在当前工作目录中创建项目,请将名称指定为 .spring-doc.cadn.net.cn

mkdir my-new-app
cd my-new-app
spring boot new .
./mvnw spring-boot:run

要创建具有不同功能的应用程序,请在 spring boot new my-app 命令中使用选项 --from。由于 --from 位于 --name 之后,您可以使用位置参数。spring-doc.cadn.net.cn

spring boot new my-app jpa
cd my-app
./mnvw spring-boot:run

上述命令创建了一个包含 Spring Data JPA 功能的新应用程序。spring-doc.cadn.net.cn

在前面的示例中,新应用的名称(my-app)和 --from 选项(jpa)均作为位置参数提供。 这等同于使用 spring boot new --name my-app --from jpaspring-doc.cadn.net.cn

名称 jpa 已注册到默认的入门项目目录中,并作为指向特定 URL 的别名,同时包含一些额外的元数据。 更多内容将在下一节中描述。spring-doc.cadn.net.cn

按名称创建

项目目录包含一系列代码仓库,用于演示特定的 Spring 技术。 默认项目目录中的仓库(内容类似于 Spring 入门指南)提供了多种功能。spring-doc.cadn.net.cn

您可以选择注册自己的目录,提供具有不同复杂度和功能的代码仓库。spring-doc.cadn.net.cn

项目目录可帮助您为新项目找到所需的功能。 在通过 spring boot add 命令向现有项目添加代码时,您也可以参考项目目录中的项目名称。spring-doc.cadn.net.cn

要查看默认“入门”目录中已注册的项目,请运行以下命令:spring-doc.cadn.net.cn

spring project-catalog list

此命令显示可与 spring boot new 命令一起使用的可用项目目录:spring-doc.cadn.net.cn

┌────┬──────────────────────────────────────────────┬───────────────────────┬───────────────────┐
│Name│URL                                           │Description            │Tags               │
├────┼──────────────────────────────────────────────┼───────────────────────┼───────────────────┤
│gs  │https://github.com/rd-1-2022/spring-gs-catalog│Getting Started Catalog│[java-11, boot-2.7]│
└────┴──────────────────────────────────────────────┴───────────────────────┴───────────────────┘
```

要查看可用的项目,请使用以下命令:spring-doc.cadn.net.cn

spring project list

此命令提供可供使用的项目列表。每个项目都有一个名称,您可以将其传递给 spring boot new。 下表显示了典型输出:spring-doc.cadn.net.cn

┌─────────────┬────────────────────────────────────────────────────────┬─────────────────────┬───────┬───────────────┐
│Name         │URL                                                     │Description          │Catalog│Tags           │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│web          │https://github.com/rd-1-2022/rest-service               │Hello, World RESTful │gs     │[rest, web]    │
│             │                                                        │web service.         │       │               │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│jpa          │https://github.com/rd-1-2022/rpt-spring-data-jpa        │Learn how to work    │gs     │[jpa, h2]      │
│             │                                                        │with JPA data        │       │               │
│             │                                                        │persistence using    │       │               │
│             │                                                        │Spring Data JPA.     │       │               │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│scheduling   │https://github.com/rd-1-2022/rpt-spring-scheduling-tasks│How to schedule tasks│gs     │[scheduling]   │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│config-client│https://github.com/rd-1-2022/rpt-config-client          │Using the Config     │gs     │[config]       │
│             │                                                        │Client library       │       │               │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│eureka       │https://github.com/rd-1-2022/eureka                     │Spring Cloud Eureka  │gs     │[cloud, eureka]│
│             │                                                        │Server               │       │               │
├─────────────┼────────────────────────────────────────────────────────┼─────────────────────┼───────┼───────────────┤
│graphql      │https://github.com/rd-1-2022/rpt-spring-graphql         │Spring GraphQL       │gs     │[graphql]      │
└─────────────┴────────────────────────────────────────────────────────┴─────────────────────┴───────┴───────────────┘

要创建一个使用 Spring Data JPA 的新项目,请运行以下命令:spring-doc.cadn.net.cn

spring boot new my-jpa jpa

此命令使用来自源代码仓库 URL 的应用程序:github.com/rd-1-2022/rpt-spring-data-jpaspring-doc.cadn.net.cn

您也可以将项目名称作为 spring boot add 命令的参数使用。

通过 URL 创建

您可以直接使用项目源代码仓库的 URL,而无需将项目添加到 Spring CLI 以便通过简短名称引用它。spring-doc.cadn.net.cn

例如,要创建 Spring JPA 项目,您可以使用以下命令:spring-doc.cadn.net.cn

spring boot new my-jpa https://github.com/rd-1-2022/rpt-spring-data-jpa

选项

spring boot new 命令接受以下选项,您可以通过运行以下命令查看:spring-doc.cadn.net.cn

spring boot new --help

该命令显示以下输出:spring-doc.cadn.net.cn

NAME
       boot new - Create a new Spring Boot project from an existing project

SYNOPSIS
       boot new --from String --name String --group-id String --artifact-id String --version String --description String --package-name String --path String --help

OPTIONS
       --name String
       Name of the new project
       [Mandatory]

       --from String
       Create project from existing project name or URL
       [Optional]

       --group-id String
       Group ID of the new project
       [Optional]

       --artifact-id String
       Artifact ID of the new project
       [Optional]

       --version String
       Version of the new project
       [Optional]

       --description String
       Description of the new project
       [Optional]

       --package-name String
       Package name for the new project
       [Optional]

       --path String
       Path to run the command in, most of the time this is not necessary to specify and the default value is the current working directory.
       [Optional]

       --help or -h
       help for boot new
       [Optional]

选项和默认值

仅指定 --name 选项时,artifactId 将默认采用 --name 选项的值。 请考虑以下示例:spring-doc.cadn.net.cn

spring boot new --name myapp
Cloning project from https://github.com/rd-1-2022/rest-service
Created project in directory 'myapp'

在生成的 pom.xml 中,名称(myapp)用作项目的 artifactIdnamespring-doc.cadn.net.cn

	<groupId>com.example</groupId>
	<artifactId>myapp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>myapp</name>
	<description>RESTful web application</description>

添加 --groupid 选项不仅会更改 groupId 标签的值,还会更改包名。 项目将重构为新的包名。 请考虑以下示例:spring-doc.cadn.net.cn

$ spring boot new --name myapp --group-id com.xkcd
Cloning project from https://github.com/rd-1-2022/rest-service
Refactoring package to com.xkcd.myapp
Created project in directory 'myapp'

生成的 pom.xml 包含以下内容:spring-doc.cadn.net.cn

	<groupId>com.xkcd</groupId>
	<artifactId>myapp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>myapp</name>
	<description>RESTful web application</description>

项目的目录结构如下:spring-doc.cadn.net.cn

$ tree myapp/
myapp/
├── LICENSE
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.adoc
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── xkcd
    │               └── myapp
    │                   ├── Application.java
    │                   └── greeting
    │                       ├── GreetingController.java
    │                       └── Greeting.java
    └── test
        └── java
            └── com
                └── xkcd
                    └── myapp
                        └── greeting
                            └── GreetingControllerTests.java