mvn archetype:generate でJavaのプロジェクト雛形を作成する際のオプションの解説

最近、Java を業務で触っている。 門外漢の自分からするとMavenのお作法が分からなかったので、備忘録がてら残しておく。

mvn archetype:generate コマンドのオプションの意味

mvn archetype:generate コマンドを使えば任意のテンプレートに沿ったプロジェクトを一発で作成することができる。

具体例として、Apache Beam でプロジェクト管理ツールであるMavenを使って、mvn archetype:generate コマンドを用いて、プロジェクト作成を行う場合、公式サイトでは以下のように指定されている

$ mvn archetype:generate \
      -DarchetypeGroupId=org.apache.beam \
      -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
      -DarchetypeVersion=2.31.0 \
      -DgroupId=org.example \
      -DartifactId=word-count-beam \
      -Dversion="0.1" \
      -Dpackage=org.apache.beam.examples \
      -DinteractiveMode=false
オプション名意味
archetypeGroupIdarchetypegroupId つまり、テンプレートを提供している作成元の識別子
archetypeArtifactIdarchetypeのテンプレート。個々ではbeam-sdk に対応したプロジェクトテンプレートを作成している。
archetypeVersionテンプレートのバージョン
groupIdJava のパッケージ名のルールに則ったすべてのプロジェクトで唯一に識別可能な識別子。今回は org.example が使われており、実際は識別子として機能指定なさそうな名前ではある。(実際昔のプロジェクトでは重複可能な単語が使われていることが多いが、その場合はmarven に登録する際に名前が衝突して登録ができないとのこと
artifactId任意の名前が使用可能であり、jar ファイルのバージョン抜きの名前を指定する。プロジェクトのパッケージ名と考えたら良さそう。これが作成されるロートディレクトリのフォルダ名
versionプロジェクトのバージョン情報
packageクラスやインターフェースの名前空間を指す。基本的にgroupidと同一だが、groupidを接頭辞にして、独自に付け足すこともある。
interactiveModeウィザード形式の生成をするかしないか

Reference