Nablarch 6u2／5u25から、Maven Archetype Plugin 3.xでブランクプロジェクトが作れるようになっているという話

# What's？

以前、こんな記事を書きました。

https://qiita.com/charon/items/772a2317392874761e04

この時はNablarch 5u18を使っていましたが、Mavenアーキタイプとして提供されている当時のブランクプロジェクトはMaven Archetype Plugin 2.4で生成する必要がありました。

Nablarch 6u2および5u25からは状況が変わっているので、見ておきたいと思います。

# Nablarch 6u2／5u25のブランクプロジェクト生成方法

代表して、ウェブアプリケーションのブランクプロジェクトの生成手順を記載したページとコマンドを載せておきます。

6u2。

```shell
$ mvn archetype:generate -DarchetypeGroupId=com.nablarch.archetype -DarchetypeArtifactId=nablarch-web-archetype -DarchetypeVersion=6u2
```

https://nablarch.github.io/docs/6u2/doc/application_framework/application_framework/blank_project/setup_blankProject/setup_Web.html

5u25。

```shell
mvn archetype:generate -DarchetypeGroupId=com.nablarch.archetype -DarchetypeArtifactId=nablarch-web-archetype -DarchetypeVersion=5u25
```

https://nablarch.github.io/docs/5u25/doc/application_framework/application_framework/blank_project/setup_blankProject/setup_Web.html

Nablarch 6u1以前、5u24以前と比べて、Maven Archetype Pluginのバージョン指定（もしくはバッチファイル経由での実行）が不要になりました。

使用するMavenのバージョンはNablarch 6u2では3.9.9以降、Nablarch 5u25では3.6.3以降である必要があります。

[Nablarch 6u2 / 初期セットアップの前に / 初期セットアップの前提](https://nablarch.github.io/docs/6u2/doc/application_framework/application_framework/blank_project/beforeFirstStep.html#firststeppreamble)

[Nablarch 5u25 / 初期セットアップの前に / 初期セットアップの前提](https://nablarch.github.io/docs/5u25/doc/application_framework/application_framework/blank_project/beforeFirstStep.html#firststeppreamble)

少し例を載せておきましょう。

# 環境

今回の環境はこちら。

```shell
$ java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu222.04, mixed mode, sharing)


$ mvn --version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /home/charon/.sdkman/candidates/maven/current
Java version: 17.0.12, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-124-generic", arch: "amd64", family: "unix"
```

Nablarchは6u2を前提にします。

# Nablarchのアーキタイプの一覧を表示する

Nablarchのアーキタイプの一覧は、こちらのコマンドで確認できます。

```shell
$ mvn archetype:generate \
  -DarchetypeGroupId=com.nablarch.archetype \
  -Dfilter=nablarch | grep nablarch-
```

結果はこんな感じです。コマンド入力待ちになっているので、Ctrl-cで終了してください。

```shell
1: remote -> com.nablarch.archetype:nablarch-batch-archetype (Nablarch Framework.)
2: remote -> com.nablarch.archetype:nablarch-batch-dbless-archetype (Nablarch Framework.)
3: remote -> com.nablarch.archetype:nablarch-batch-ee-archetype (Nablarch Framework.)
4: remote -> com.nablarch.archetype:nablarch-container-batch-archetype (Nablarch Framework.)
5: remote -> com.nablarch.archetype:nablarch-container-batch-dbless-archetype (Nablarch Framework.)
6: remote -> com.nablarch.archetype:nablarch-container-jaxrs-archetype (Nablarch Framework.)
7: remote -> com.nablarch.archetype:nablarch-container-web-archetype (Nablarch Framework.)
8: remote -> com.nablarch.archetype:nablarch-jaxrs-archetype (Nablarch Framework.)
9: remote -> com.nablarch.archetype:nablarch-web-archetype (Nablarch Framework.)
```

どのアーキタイプがどのアプリケーション処理方式に対応するかは省略します。

詳しく見たい場合は、こちらへ。

https://nablarch.github.io/docs/6u2/doc/application_framework/application_framework/blank_project/index.html

https://nablarch.github.io/docs/5u25/doc/application_framework/application_framework/blank_project/index.html

# ブランクプロジェクトを生成する

ブランクプロジェクトを生成するコマンドも載せておきましょう。

非インタラクティブに作る場合はこんな感じですね。

```shell
$ mvn archetype:generate \
  -DinteractiveMode=false \
  -DarchetypeGroupId=com.nablarch.archetype \
  -DarchetypeArtifactId=[使用するNablarchのブランクプロジェクト用のアーキタイプ] \
  -DarchetypeVersion=[使用するNablarchのバージョン] \
  -DgroupId=[作成するプロジェクトのグループID] \
  -DartifactId=[生成するプロジェクトのアーティファクトID] \
  -Dversion=[生成するプロジェクトのバージョン] \
  -Dpackage=[生成するプロジェクトのパッケージ名]
```

ウェブアプリケーションでの具体例。

```shell
$ mvn archetype:generate \
  -DinteractiveMode=false \
  -DarchetypeGroupId=com.nablarch.archetype \
  -DarchetypeArtifactId=nablarch-web-archetype \
  -DarchetypeVersion=6u2 \
  -DgroupId=com.example \
  -DartifactId=hello-nablarch-web \
  -Dversion=0.0.1 \
  -Dpackage=com.example
```

生成時の情報。

```shell
[INFO] --- archetype:3.3.0:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] Archetype repository not defined. Using the one from [com.nablarch.archetype:nablarch-web-archetype:6] found in catalog remote
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: nablarch-web-archetype:6u2
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: hello-nablarch-web
[INFO] Parameter: version, Value: 0.0.1
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: packageInPathFormat, Value: com/example
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: hello-nablarch-web
[INFO] Parameter: version, Value: 0.0.1
[INFO] Project created from Archetype in dir: /path/to/hello-nablarch-web
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.879 s
[INFO] Finished at: 2024-10-21T12:55:35+09:00
[INFO] ------------------------------------------------------------------------
```

生成されたあとは、プロジェクト内のディレクトリに移動して作業を進めていきましょう。

```shell
$ cd hello-nablarch-web
```

Nablarch 6u1、5u25以前と比べて、バッチファイルやMaven Archetype Pluginのバージョン指定が不要になったので扱いやすくなりました。