====== 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の方にチェックを入れる。