Apache Maven は Java 用のプロジェクト管理ツールです。テスト、ビルド、javadoc ドキュメント生成などを汎用的な手順で実行できるようになります。Apache Ant の後継です。バージョン 3 について簡単に使用方法をまとめます。事前にこちらからバイナリをダウンロードおよび解凍しておいてください。解凍結果の bin ディレクトリに PATH を通すことで mvn コマンドが使用できるようになります。
$ mvn --version
Apache Maven 3.3.1
Maven home: c:\Users\username\bin\apache-maven-3.3.1\bin\..
...
なお JAVA SDK が動作のために必要です。Oracle のページから JDK をダウンロードおよびインストールして PATH を通しておく必要があります。また、社内ネットワークなどでプロキシ設定が必要な場合は Maven home 内の apache-maven-3.3.1/conf/settings.xml という設定ファイルを編集します。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<proxies>
<proxy>
<id>myproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.somewhere.com</host>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies>
...
</settings>
以下のコマンドでテンプレートを生成します。
$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
その際、必要に応じて Central Repository からパッケージが自動でダウンロードされて $HOME/.m2 に保存されます。Central Repository は yum における base レポジトリのようなものです。artifact が管理されています。後述の POM 内の Dependencies に記載する内容が掲載されていたりします。
生成結果ディレクトリ
my-app/
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mycompany
│ └── app
│ └── App.java
└── test
└── java
└── com
└── mycompany
└── app
└── AppTest.java
Project Object Model を意味する POM はプロジェクトの設定ファイルです。編集する必要がある場合はこちらのリファレンスをご参照ください。
例えば、プロジェクトに含めるリソースファイルの既定の場所 ${basedir}/src/main/resources
などを変更するための設定については以下のセクションに記載があります。
$ mvn package
$ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Hello World!
$ mvn clean
$ mvn validate
$ mvn compile
$ mvn test
$ mvn site
こちらのページに記載されているとおり、プロジェクトで使用する Java のバージョンを maven-compiler-plugin
によって pom.xml で指定すれば、ビルド時に必要なバージョンを Maven に伝えることができます。Maven が指定された適切な Java でビルドするためには JAVA_HOME
が適切に指定されている必要があります。maven-compiler-plugin
に依らず、JAVA_HOME
で指定された JDK を用いてビルドされます。一時的に変更することで、複数のバージョンの JDK を同じ PC でプロジェクト毎に使い分けることができます。
Windows の例
set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_131"
echo %JAVA_HOME%
Linux の例
export JAVA_HOME=/path/to/java_home
echo $JAVA_HOME
JAR コマンドで展開して MANIFEST.MF
の内容を調べることで、指定した JDK でビルドされたことが確認できます。
jar xvf sample.jar
cat META-INF/MANIFEST.MF