→開発支援ツール
→Java関連開発ツール
基本的な用語 †
- ビルドライフサイクル
- 以下の3つがある
- clean: ビルドした成果物を削除する
- default: デプロイまでを行う
- site: サイトドキュメントを生成する
- 各ライフサイクルは複数のフェーズで構成される
- Mavenのビルドライフサイクル 2019.1
- フェーズ
- defaultライフサイクルのフェーズの例:validate,initialize,compile,test-compile,test,package,verify,install,deploy
- プラグイン…Mavenの各フェーズで実行する具体的な処理のこと
- ゴール…各プラグインが持つ特定の処理(をその目的で表現したもの?)。1つのプラグインが複数のゴールを持つことがある
- アーキタイプ…プロジェクトをひな形から自動生成する仕組み
- Nexus…プライベートなリモートリポジトリを構築するのに使えるOSSのリポジトリサーバ
POM †
- POM…Project Object Modelの略。Maven の設定を持つXMLファイル。
- POMは複数のファイルで親子関係を持てる。
- 最上位のPOM を Super POM と呼ぶ。子POMに無い情報は親POMから引き継がれる
- GAV情報…Mavenで管理するプロジェクト情報の基本的な要素。グループ、アーティファクト、バージョン
- グループID…プロジェクトが属する組織や上位プロジェクト
- アーティファクトID…プロジェクトを識別する名前
- バージョン
- グループ+アーティファクトでプロジェクトが特定され、さらにバージョンで断面を特定する。
- バージョンは開発中バージョン(SNAPSHOT)とリリースバージョン(SNAPSHOT以外)に分かれる。
- バージョン番号につけるサフィックス-SNAPSHOTは「開発中であり、今後内容が変わる可能性がある」ことを表す
- SNAPSHOTがついていないものはリリース版であり、基本的には変更されないことを表す
- SNAPSHOT云々は慣例であって、システム的に制限があるわけではない
- プロジェクトの完全修飾名… <groupId>:<artifactId>:<version>
- 親子関係をマージ後のPOM(実効POM)は maven-help-plugin の effective-pom ゴールを指定するとみられる。
- 依存関係の定義を親にまとめるには、 <dependencyManagement> を使用する
- プロジェクトを集約するには、集約元となるプロジェクトで <modules> を使用する
- maven-dependency-plugin の tree ゴール を実行すると、この推移的な依存関係を含めたすべての依存関係をツリー構造のグラフで確認できる
mvn dependency:tree
- ビルド環境によって pom.xml の内容を切り替えたい(特定のプラグインを有効にしたり、設定値を変更したり)場合に、プロファイル(Profile)という仕組みが使える
- プロファイルごとに、プロパティや依存関係、 project.build.directory の設定を変えられる。
- JDKのバージョンやOSを条件にプロファイルを切り替えることができる
- mvn help:all-profiles で使えるプロファイルが見られる
依存関係とスコープ †
Tips †
- Mavenで差分コンパイルできない 2019
- <useIncrementalCompilation>false</useIncrementalCompilation> を設定することで、本来この機能に期待されている *賢い* インクリメンタルコンパイルが行われなくなる。 (この賢いインクリメンタルコンパイル機能がバグっているため、全ファイル変更されたと見なされているのが現状。)
- Setting.xml
- Eclipseの場合、デフォルトでは下記の場所にある。(Preference参照)
- C:\Users\<UserName>\.m2
- コンソール版では conf フォルダの下にあります。
- プロジェクトの作成
- コンパイル
- メモ:mvn compileのコマンドはsampleフォルダに移ってから打つ
- するとsampleフォルダの下に target\classesができる
入門・参考になる記事 †
- Maven解説
- Maven は Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル全体を管理します。プロジェクトのビルドツールである Ant とは異なり、Maven はプロジェクト管理ツールとして、プロジェクトに関する色々な情報を POM に集約し、POM の情報に基づきプロジェクト全体を管理します。
- プロジェクトの依存するライブラリの管理。
- プロジェクト情報の配信。(サイトの作成、配備やユニットテストのレポートなど)
- プロジェクトの作成からコンパイル、テスト、パッケージング、配備などのプロジェクトのライフサイクルに含まれる各タスクの支援。
- Maven入門
- リモートリポジトリとローカルリポジトリは、どちらもプラグインやライブラリが置かれる場所です。 Maven は必要なプラグインやライブラリをリモートリポジトリからダウンロードし、それをローカルリポジトリに保存します。そして、各プロジェクトはローカルリポジトリに保存されているライブラリを参照します。この仕組みによって、ローカル環境にある全てのプロジェクトの間でライブラリを共有することができます。
公式 †
|