新規プロジェクトの作成

spring boot new コマンドを使用すると、Spring Boot アプリケーションを簡単に作成できます。

このコマンドは、既存の完全に機能する Spring Boot アプリケーションのソースコードリポジトリからコンテンツをコピーして、新しいプロジェクトを作成します。

まず、--name オプションを指定します。これにより、テスト付きの基本的な RESTful Web アプリケーションが作成されます。--from オプションを使用して、Spring Data JPASpring Cloud Stream などのさまざまな機能を持つプロジェクトを作成することもできます。

さらにカスタマイズするには、--package-name および --description だけでなく、さまざまなオプション ( --group--artifact-id--version など) を柔軟に指定できます。--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