Open2

プロになるための「Spring入門」をコマンドラインで実行する。

akagiakagi

概要

mavenのmulti moduleでのmvnコマンドによるコンパイル手順を調べました。

https://gihyo.jp/book/2023/978-4-297-13613-0/support
ではサンプルコードの実行はIDEの場合が紹介されていますが、コマンドラインでコンパイルする方法は記述されておらず躓いたため、メモを残します。
サンプルコードのビルドスクリプトはmavenのmulti moduleを使って、依存関係が記述されているため、コマンドライン上からコンパイルする方法を調べました。

akagiakagi

サンプルコードの構成

サンプルコードは次のような構造になっています。
spring-book-src-master$ tree -L 2
.
├── 0001-training-common
│   ├── Instruction.adoc
│   ├── pom.xml
│   └── src
├── 0002-shopping-common
....
├── 2302-shopping-selenide-answer
└── pom.xml
親モジュール(spring-book-src-master)と、0001-training-commonなどの子のモジュールからなる
mavenマルチモジュールの構成になっています。各xxxxにpom.xmlがあります。

実行方法

0402-shopping-stereotype-annotationを実行する場合です。

コンパイル

親ディレクトリ(spring-book-src-master)から --project(-pl)オプションとを--also-make(-am) オプション指定してpackage フェーズを実行します。

spring-book-src-master$ mvn clean compile -pl  0402-shopping-stereotype-annotation -am

-plオプションは特定のモジュールだけを対象とするため、-amは依存しているモジュールも対象にするためです。
参考
https://maven3.kengo-toda.jp/module/option

依存ライブラリのダウンロード

~/.m2にあるライブラリで依存しているjarをtarget/dependencyディレクトリ内にコピーさせます。

spring-book-src-master$ mvn  dependency:copy-dependencies -pl 0402-shopping-stereotype-annotation -am

javaの実行

クラスパスを指定して実行することができます。
jarファイルのあるtarget/dependencyとtarget/classesを指定します。
そして、mainメソッドのある。com.example.shopping.ShoppingApplicationを実行すれば実行することができます。

java -cp  0402-shopping-stereotype-annotation/target/dependency/*:0402-shopping-stereotype-annotation/target/classes com.example.shopping.ShoppingApplication

0402はエラーが起こるのを直せという課題なのでエラーが出ますが…

以上です。