Dev Study
← Spring コース

28. Maven: pom.xml を1行ずつ読む

この の54行は、親の指定、自分の、、依存、の宣言と、名前や説明の欄(14行は空のタグ)でできています。 は書式の版で、 3 系(ここでは 3.9.16)では 4.0.0 だけが使えます。 は親 POM の座標で、 が空なので親フォルダの pom.xml を探さずから取ります。

依存の版を書いていないのに動くのは、親から継いでいるからです。 で合成結果を出すと、54行が 10,541 行になり、依存2本に version 4.1.1 が(scope を省いた方には compile も)補われ、プラグインに の実行が足されます。親の親が版の一覧表 、土台が全 の継ぐ です。

package.json との対応は までで、scripts に当たる欄はありません。手順は Maven 側にとして決まっているからです(次のレッスンで扱います)。 は書かなければ です。空のタグは親の値を消す上書きです。 は、親が maven.compiler.release を ${java.version} としているので、ここだけで変わります。

点線の付いた語はタップすると説明が出ます。用語集を開く →

雛形の pom.xml(54行)が、どこから値を継いで 10,541 行の effective-pom になるか(Maven 3.9.16 / Boot 4.1.1)
pom.xml(54行)parent の座標、自分の座標、java.version=25、依存2本(版なし)、spring-boot-maven-plugin(版なし)
NestJS では package.json。scripts に当たる欄は無い
<parent>(relativePath が空なのでリポジトリから取る)
spring-boot-starter-parent 4.1.1(387行)java.version=17、maven.compiler.release=${java.version}、プラグインの版と repackage の実行
<parent>
spring-boot-dependencies 4.1.1(3,761行)dependencyManagement に 652 本の座標と版。import で他の BOM も取り込む(後のレッスンで扱います)
すべての POM が継ぐ
Super POMcentral = https://repo.maven.apache.org/maven2、src/main/java と target/ の既定
mvn help:effective-pom で合成結果を見る
effective-pom(10,541行)dependencyManagement 1,911 本。自分の依存2本に version 4.1.1 と scope が補われている
  • 行数と本数は Boot 4.1.1 + Maven 3.9.16 の値。版で変わる
  • packaging は書かなければ jar。effective-pom にも <packaging> は出ない(既定は省略される)
  • modelVersion を 3.0.0 に変えると、Maven 3.9.16 は「対応するのは [4.0.0]」というエラーで止まる(実測)。原文も currently the only supported と版を限っている

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Java

図やコードに出てくる用語(タップで説明)

サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗