Maven
Apache Maven
https://maven.apache.org/
Javaの構築ツール、のひとつ、パッケージの依存関係に従っていろいろ構築する。
JUnitなどでのテストも込み
Antでは依存関係の把握が難しいので作られた?
類似のものにGradleなどがある
コマンド mvn に PATHを通せば適度に使える 3.9.9 では Windows コマンドがmvn.cmd になっているっぽい
サブコマンド?
掃除
$ mvn clean
成果物の生成 ?
$ mvn compile
テスト (jar前?)
$ mvn test
バッケージ化 (署名前?)
$ mvn package
署名と検証?
$ mvn verify
ローカルリポジトリへのインストール jar source doc
$ mvn install
リモートリポジトリへのインストール
$ mvn deploy
Maven Daemon
https://maven.apache.org/tools/mvnd.html
daemon化して高速化したもの
$ mvn
を
$ mvnd
に置き換えるだけ
テンプレート(archtype)
プロジェクトのテンプレートを持っていて生成できる
jar, war などいろいろ対応、自作も可能
mvn archetype:generate
オプションを省略してもとりあえず実行可能
オプション
テンプレートのID
-DarchetypeGroupId=ぐるーぷID
-DarchetypeArtifactId=アーティファクトID
-DarchetypeVersion=バージョン
例
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetpye-webapp
ぐるーぷIDは省略してもいい場合もあり
作成するプロジェクトのID
-DgroupId=プロジェクトのグループ
-DartifactId=プロジェクトid
-Dversion=初期バージョン
リポジトリから依存ライブラリを取得できる、プラグインも豊富
Mavenレジストリ
ローカルでも作れる、グローバルなものもある
Maven Central レジストリへの登録にはGPG鍵などが必要 登録しない場合もGPG鍵を作っておくと(鍵も登録は不要)ビルドの署名段階を通れるのでスムーズかもしれない
旧版OSSRHが終了? Maven Central に移行が完了している
OSSRH https://s01.oss.sonatype.org/
Maven Central https://central.sonatype.com/
sonatype-nexus3
プラグイン
<groupId>org.apache.maven.plugins</groupId> にいろいろあり
https://maven.apache.org/plugins/index.html
maven-source-plugin
maven-compiler-plugin
maven-javadoc-plugin javadoc
maven-dependency-plugin
https://maven.apache.org/plugins/maven-dependency-plugin/
maven-gpg-plugin 署名
https://maven.apache.org/plugins/maven-gpg-plugin/
maven-assembly-plugin
https://maven.apache.org/plugins/maven-assembly-plugin/
maven-jar-plugin
https://maven.apache.org/plugins/maven-jar-plugin/
maven-jlink-plugin
https://maven.apache.org/plugins/maven-jlink-plugin/
Java Platform Module System (JPMS)対応に
jlink相当
maven-shade-plugin
https://maven.apache.org/plugins/maven-shade-plugin/
META-INF/service/ などが重複する場合 maven-assembly-plugin の代わりに使う
Maven Central用
<groupId>org.sonatype.central</groupId>
central-publishing-maven-plugin
Jib
OCIコンテナ
jarをひとつにまとめる
いくつかの方法?
maven-assembly-plugin
maven-shade-plugin