====== Apache Maven ======
{{tag>java maven}}
==== リンク ====
* [[https://maven.apache.org/|Apache Maven]]
* [[https://maven.apache.org/pom.html|POM Reference]]
* [[https://maven.apache.org/settings.html|settings.xml Reference]]
* [[https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html|Introduction to the Standard Directory Layout]]
* [[https://maven.apache.org/guides/introduction/introduction-to-profiles.html|Introduction to Build Profiles]]
* [[https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Available_Variables|Available Variables]]
* [[https://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html|POM Best Practices]]
* [[maven_archetype|Maven Archetype]]
* [[maven_packaging|Mavenで標準以外の成果物(artifact)を作成する]]
* [[maven_wrap_jar|Mavenに対応していないjarファイルをMavenのアーティファクトにする]]
* [[maven_compiler_plugin_excludes|Maven Compiler Pluginのexcludes]]
* [[archiva|Apache Archivaで自前のMavenリポジトリを作る]]
==== goals ====
* ''clean''
* ''compile'' - コンパイル
* ''test'' - テスト
* ''pacakge'' - 成果物を生成
* ''install'' - test, compile, package した後にローカルリポジトリに登録
* ''dependency:go-offline'' - オフライン化するために依存モジュールをダウンロードする
* ''dependency:tree'' - 依存関係をツリー表示
* ''dependency:list -Dsort -DincludeScope=test'' - 依存モジュールの一覧表示
* ''dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=runtime'' - 依存モジュールを指定ディレクトリにコピーする
* ''dependency:analyze-report'' - ''target/dependency-analysis.html'' を出力
* ''help:active-profiles'' - アクティブなプロファイルを表示
* ''archetype:generate''
==== プロキシの設定 ====
''nonProxyHosts''の記述形式は[[https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html|Networking Properties]]を参照。
true
myHttpProxy
http
proxyuser
proxypass
172.31.0.2
3128
127.0.0.1|localhost|172.31.*|*.internal
true
myHttpsProxy
https
proxyuser
proxypass
172.31.0.2
3128
127.0.0.1|localhost|172.31.*|*.internal
==== プロファイルの指定 ====
''-P'' でプロファイルを指定。
==== テストをスキップする ====
コマンドラインで''-DskipTests''を指定すると、テストの実行をスキップする。
コマンドラインで''-Dmaven.test.skip''を指定すると、テストコードのコンパイルもスキップする。
==== JUnitのテストでファイルを読み込む ====
ファイルは ''src/test/resources'' の下に配置する。
Eclipseでは、 ''src/test/resources'' をソースパスに追加する。
起動ディレクトリを特定できないので、クラスローダから取得する。
private File loadTestFile(String filename) throws FileNotFoundException {
try {
URL fileURL = ClassLoader.getSystemResource(filename);
return new File(fileURL.toURI());
} catch (URISyntaxException | NullPointerException e) {
throw new FileNotFoundException(filename);
}
}
===== 試験実行時の環境変数とシステムプロパティを設定する =====
org.apache.maven.plugins
maven-surefire-plugin
var_value
prop_value
===== MavenのプロジェクトからEclipseのプロジェクトを作成する =====
mvn eclipse:eclipse
==== EclipseからMavenを実行するとコンパイルに失敗する場合 ====
Eclipseの設定の''インストール済みのJRE''でJDKを追加してデフォルトにしているのに、
JDKで実行していないというエラー(''No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?'')が発生する。
''インストール済みのJRE''に同じバージョンでJDKとJREがあるとJREが使用される場合がある。
* Mavenの実行結果を表示している''コンソール''画面のタイトルがJREのjavaw.exeになっている。
* プロジェクトの''ビルド・パス''を開き、''ライブラリー''タブで''JREシステム・ライブラリー''の内容をチェックすると、jarファイルの参照先がJREのディレクトリになっている。
=== JDKで動くようにする ===
- メニューの''ウィンドウ''-''設定''を開き、''Java''-''インストール済みのJRE''-''実行環境''でpom.xmlに指定したJavaバージョンの実行環境を選択する。
- JREとJDKが両方あるなら、JDKの方にチェックを入れる。