アクションガイド
このページでは、使用できるアクションについて説明します。
生成
generate
アクションは、ファイルの生成に使用されます。宛先パスを指定するには to
キーが必要です。パスは、ユーザー定義コマンドが実行された場所に対する相対パスです。ファイルがすでに存在する場合、上書きされません。
ファイルの内容は、text
キーを使用して定義されます。
次の例は、単純な generate
アクションを示しています。
actions:
- generate:
to: hello.txt
text: Hello {{user-name}} on {{os-name}}.
{{user-name}}
および {{os-name}}
変数は、Handlebars テンプレートエンジンによって実際の値に置き換えられます。ユーザー定義コマンドに渡されるコマンドラインオプションは、テンプレートエンジンによって使用される変数として公開されます。
事前定義されたテンプレートエンジン変数の詳細については、"テンプレートエンジン" セクションを参照してください。
リテラル構文
YAML のリテラル構文を使用すると、複数行の文字列を表現したり、文字列内の書式設定や空白を保持したりできます。
リテラル構文は、改行とインデントを維持したいが、一部の特殊文字をスラッシュ文字でエスケープする必要がある場合に便利です。
次の例では、YAML のリテラル構文を使用します。
actions:
- generate:
to: hello.txt
text: |
This is a multi-line
string using the literal syntax.
It preserves the line breaks
and indentation exactly as written.
\t This is a tab character.
\n This is a newline character.
\\ This is a backslash.
\u2713 This is a Unicode character (checkmark symbol).
|
文字の後にインデントされたブロックを使用すると、文字列はリテラルとして扱われ、改行とインデントが保持されます。
外部ファイル
場合によっては、エスケープが必要なため、リテラル構文を使用してテキストを埋め込むことが困難な場合があります。JSON ファイル、正規表現、ファイルパスは、このような問題が発生する一般的な例です。さらに、アクションファイルとは別にテキストコンテンツを編集して、テキストエディターの構文強調表示機能や検証機能を使用することもできます。
このような場合に対処するには、from
キーを使用して、テキストを生成するソースファイルを指定します。
次の例では、from
キーを使用します。
actions:
- generate:
to: hello.json
from: json-template.json
to
キーは、コマンドが実行されるディレクトリに対する相対キーです。
json-template.json
ファイルは、コマンド .spring/commands/hello/create
と同じディレクトリにあります。次のリストにその内容を示します。
{
"operatingSystem": "{{os-name}}",
"phoneNumbers": [
{
"type": "iPhone",
"number": "0123-4567-8888"
},
{
"type": "home",
"number": "0123-4567-8910"
}
]
}
入門例から spring hello create
を実行すると、次のように hello.json
というファイルが生成されます。
$ spring hello create
Generated /home/testing/rest-service/hello.json
$ cat hello.json
{
"operatingSystem": "Linux",
"phoneNumbers": [
{
"type": "iPhone",
"number": "0123-4567-8888"
},
{
"type": "home",
"number": "0123-4567-8910"
}
]
}
キー内の変数の置換
to
、from
、text
キーで Handlebars テンプレート変数を使用することもできます。
次の例では、to
キーで Handlebars テンプレート変数を使用します。
actions:
- generate:
to: src/main/java/{{root-package-dir}}/{{feature}}/{{capitalizeFirst feature}}Controller.java
from: RestController.java
事前定義されたテンプレートエンジン変数の詳細については、"テンプレートエンジン" セクションを参照してください。
注入する
inject
アクションは、ファイルにテキストを挿入するために使用されます。
テキストを挿入する場所を示すために、after:
キーまたは before:
キーのいずれかを定義する必要があります。
次のリストはサンプルファイルを示しています。
Hello there.
This is a test file.
We are going to insert before the line that has the word marker1
marker2
次のリストは、marker2
という単語を含む行の後に INJECTED AFTER
を挿入する inject
アクションを示しています。
actions:
- inject:
to: sample.txt
text: "INJECTED AFTER"
after: marker2
このアクションを実行した後のテキストファイルは次のとおりです。
Hello there.
This is a test file.
We are going to insert before the line that has the word marker1
marker2
INJECTED AFTER
次のリストは、marker1
という単語を含む行の前に INJECTED BEFORE
を挿入する inject
アクションを示しています。
actions:
- inject:
to: sample.txt
text: "INJECTED BEFORE"
before: marker1
このアクションを実行した後のテキストファイルは次のとおりです。
Hello there.
This is a test file.
INJECTED BEFORE
We are going to insert before the line that has the word marker1
marker2
Maven 依存関係の挿入
inject-maven-dependency
アクションは、Maven 依存関係エントリを Maven pom.xml ファイルに挿入します。
text:
フィールド内で Handlebars テンプレート変数と式を使用できます。
次の例は、Maven 依存関係を挿入するための基本的な構文を示しています。
actions:
- inject-maven-dependency:
text: |
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Maven 依存関係管理の挿入
inject-maven-dependency-management
アクションは、Maven 依存関係管理エントリを Maven pom.xml ファイルに挿入します。
text:
フィールド内で Handlebars テンプレート変数と式を使用できます。
次のリストは、Maven 依存関係を挿入するための基本的な構文を示しています。
actions:
- inject-maven-dependency-management:
text: |
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-bom</artifactId>
<version>0.6.0.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Maven ビルドプラグインの挿入
inject-maven-build-plugin
アクションは、Maven ビルドプラグインエントリを Maven pom.xml ファイルに挿入します。
text:
フィールド内で Handlebars テンプレート変数と式を使用できます。
次の例は、Maven 依存関係を挿入するための基本的な構文を示しています。
actions:
- inject-maven-build-plugin:
text: |
<plugin>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-maven-plugin</artifactId>
<version>1.14.4</version>
<configuration>
<classPathDiscovery>true</classPathDiscovery>
</configuration>
<executions>
<execution>
<goals>
<goal>transform-extended</goal>
</goals>
</execution>
</executions>
</plugin>
Maven リポジトリの挿入
inject-maven-repository
アクションは、Maven リポジトリエントリを Maven pom.xml ファイルに挿入します。
text:
フィールド内で Handlebars テンプレート変数と式を使用できます。
次の例は、Maven リポジトリを挿入するための基本的な構文を示しています。
actions:
- inject-maven-repository:
text: |
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</repository>