← Spring コース
18. Maven は何を変えたか
が から主に変えたのは3つです。ソースや出力の置き場所を規約で固定したこと、ビルドの手順と順序を決まったものにしたこと、を(グループ名・名前・版の3つ組)で宣言すれば取ってくるようにしたことです。設定ファイルの には場所も手順も書かないので、 を読まなくても構成が分かります。
npm に当てはめると、pom.xml の は package.json の dependencies に当たります。対応しないのは実体の置き場所です。node_modules のようにプロジェクトの中には置かず、ホームディレクトリの に全プロジェクト共用で入ります。置き場所は座標から決まり、同じライブラリの別の版が隣に並びます。
短く書けるのは、場所と手順を書かなくなった分です。代わりに、規約どおりの場所へ置くことが前提になりました。行数の比較には注意が要ります。依存が1本の同じアプリで build.xml は42行、最小の pom.xml は20行でしたが、この で作った は では起動できません。入口のを書き込む設定を足すと36行になり、それでも依存は JAR に入りません。
点線の付いた語はタップすると説明が出ます。用語集を開く →
Ant: build.xml置き場所・手順・順序をすべて自分で書く
Maven: pom.xml座標と依存と、少しの設定だけを書く
ソースの場所
src/srcdir に自分で書いた名前
src/main/java/規約で決まっている。書かない
ビルドの手順と順序
target と depends で書くディレクトリ作成、コンパイル、JAR 作成の順を自分で決める
書かない決まった段階を順に進む(後のレッスンで扱います)
依存ライブラリ
lib/ に JAR を手で置くどの JAR が要るかは人が管理する
座標を3行書くMaven が取得し ~/.m2/repository に置く
ビルドのコマンドと出力
ant → dist/app.jarターゲット名も出力先も自分で決めた名前
mvn package → target/hello-1.0.0.jarどのプロジェクトでも同じ語、同じ場所
- 行数は空行込みで、build.xml 42行、最小の pom.xml 20行、Main-Class の設定を足した pom.xml 36行(Ant 1.10.18 / Maven 3.9.16 / JDK 25 での1例)。
- 最小の pom で作った JAR は java -jar で no main manifest attribute になります。Ant 側の42行には、Main-Class の記述と実行用のターゲットが含まれています。
- Maven を始めた Jason van Zyl は、経緯を書いた History of Maven(2005年10月時点の文書)で、規約を設定より優先する考え(convention over configuration)を好んだと書いています。
- 素の Maven は依存を成果物の JAR に入れません。1つの JAR で動く形は Spring Boot のプラグインが足すもので、後のレッスンで扱います。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Java
図やコードに出てくる用語(タップで説明)
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗