建立新專案

spring boot new 命令可以輕鬆建立 Spring Boot 應用程式。

此命令會複製現有功能齊全的 Spring Boot 應用程式的原始碼倉庫內容,以建立新專案。

要開始使用,請指定 --name 選項,它會建立一個帶有測試的基本 RESTful Web 應用程式。您也可以使用 --from 選項建立具有不同功能的專案,例如 Spring Data JPA 或 Spring Cloud Stream。

為了進一步定製,您可以靈活地指定各種選項(例如 --group--artifact-id--version),以及 --package-name--description。如果您提供了 --package-name,則在克隆原始碼倉庫後會對程式碼進行重構。

以下各節詳細解釋了這些主題。

有關向現有應用程式新增額外程式碼的更多資訊,請參閱 spring boot add使用者自定義命令

快速入門

要在新目錄中快速建立一個簡單的 Web 應用程式,請執行以下命令

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

這會在 my-app 目錄中建立一個基本的 Web 應用程式。在此示例中,--name 選項是以位置引數傳遞的,等同於 spring boot new --name my-app

如果您更喜歡在當前工作目錄中建立專案,請將名稱指定為 .

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

要建立具有不同功能的應用程式,請在 spring boot new my-app 命令中使用 --from 選項。由於 --from--name 之後,您可以使用位置引數。

例如

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

前面的命令建立了一個包含 Spring Data JPA 功能的新應用程式。

在前面的示例中,新應用程式的名稱(my-app)和 --from 選項(jpa)都作為位置引數提供。它等同於使用 spring boot new --name my-app --from jpa

名稱 jpa 已註冊到預設的入門專案目錄中,並作為帶有額外元資料的特定 URL 的別名。以下部分將對此進行更詳細的描述。

按名稱建立

專案目錄包含一系列展示特定 Spring 技術的程式碼倉庫。預設專案目錄中的倉庫類似於 Spring 入門指南中的內容,提供了一系列功能。

您可以選擇註冊自己的目錄,提供不同複雜度和功能的程式碼倉庫。

專案目錄可幫助您找到新專案所需的功能。透過使用 spring boot add 命令向現有專案新增程式碼時,您也可以參考專案目錄中的專案名稱。

要檢視預設“入門”目錄中已註冊的專案,請執行以下命令

spring project-catalog list

此命令顯示了可與 spring boot new 命令一起使用的可用專案目錄

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

要檢視可用專案,請使用以下命令

spring project list

此命令提供了一個可供使用的專案列表。每個專案都有一個名稱,您可以將其傳遞給 spring boot new。下表顯示了典型的輸出

┌─────────────┬────────────────────────────────────────────────────────┬─────────────────────┬───────┬───────────────┐
│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 boot new my-jpa jpa

此命令使用源自以下原始碼倉庫 URL 的應用程式:github.com/rd-1-2022/rpt-spring-data-jpa

您也可以將專案名稱用作 spring boot add 命令的引數。

按 URL 建立

除了將專案新增到 Spring CLI 以便使用短名稱引用它之外,您還可以直接使用專案原始碼倉庫的 URL。

例如,要建立 Spring JPA 專案,可以使用以下命令

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

選項

spring boot new 命令接受以下選項,您可以執行以下命令來檢視它們

spring boot new --help

該命令顯示以下輸出

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 boot new --name myapp
Cloning project from https://github.com/rd-1-2022/rest-service
Created project in directory 'myapp'

在生成的 pom.xml 中,名稱(myapp)被用作 artifactId 和專案的 name

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

新增 --groupid 選項不僅會改變 groupId 標籤的值,還會改變包名。專案會重構為新的包名。考慮以下示例

$ 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 包含以下內容

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

專案的目錄結構如下

$ 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