Mavenの基本を知っておくということで。
Mavenは「Maven – Welcome to Apache Maven」で開発が進められています。ここから最新版をダウンロードします。本記事執筆時は、apache-maven-3.0.4-bin.tar.gz が最新でした。ちなみに、MacOS X Mountain Lionでは、mvnコマンドもインストールされていてバージョンも3.0.3と新しいものなので、わざわざインストールしなくてもよいかもしれません。
Javaがインストールされていないと動きませんから、あらかじめインストールしておくようにします。バージョンを確認したときに、エラーとなる場合は調査が必要です。
$ mkdir ~/applications $ tar xzf apache-maven-3.0.4-bin.tar.gz -C ~/applications $ ~/applications/apache-maven-3.0.4/bin/mvn --version
まず、maven-archetype-quickstartのプロジェクトを生成してみましょう。次のように入力すると、必要なファイルのダウンロードが始まり(~/.m2に保存されます)、アーキタイプのリストが表示されます。デフォルトのまま[Enter]を入力すると、maven-archetype-quickstart が選択されます。素野後、アーキタイプのバージョンはデフォルトのまま、groupIdには org.sssg.soft.example.maven とし、artifactIdには Example、versionはデフォルトのまま、packageもデフォルト( org.sssg.soft.example.maven )と入力します。
$ ~/applications/apache-maven-3.0.4/bin/mvn archetype:generate (略) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 216: Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6: (略) quickstart/1.1/maven-archetype-quickstart-1.1.pom (2 KB at 37.7 KB/sec) Define value for property 'groupId': : org.sssg.soft.example.maven Define value for property 'artifactId': : Example Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.sssg.soft.example.maven: : Confirm properties configuration: groupId: org.sssg.soft.example.maven artifactId: Example version: 1.0-SNAPSHOT package: org.sssg.soft.example.maven Y: : Y [INFO] ----------------------------------------------------
こうすると、下記のようなディレクトリとファイルが生成されます。
. └── Example ├── pom.xml └── src ├── main │ └── java │ └── org │ └── sssg │ └── soft │ └── example │ └── maven │ └── App.java └── test └── java └── org └── sssg └── soft └── example └── maven └── AppTest.java
これで、App.java に処理を追加すればJavaアプリケーションの開発ができるし、AppTest.java にテストを書けばテストもできます。コンパイルやテストを実行するには次のようにします。
$ ~/applications/apache-maven-3.0.4/bin/mvn compile $ ~/applications/apache-maven-3.0.4/bin/mvn test
compileやtestを実行すると、下記のようなtargetディレクトリが追加される。リポジトリなどを用意する場合は、このtargetディレクトリは無視するように設定するのが普通だろう。
└── target ├── classes │ └── org │ └── sssg │ └── soft │ └── example │ └── maven │ └── App.class ├── surefire ├── surefire-reports │ ├── TEST-org.sssg.soft.example.maven.AppTest.xml │ └── org.sssg.soft.example.maven.AppTest.txt └── test-classes └── org └── sssg └── soft └── example └── maven └── AppTest.class
pom.xmlはProject Object Modelを表現するXMLファイルです。要素は、projectの基礎となるBasicな情報、構築に関するbuild要素、reporting要素、プロジェクトのメタデータ、環境に大きく分類することができます。quickstartでは、Basicな情報しか生成されていませんでした。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.sssg.soft.example.maven</groupId> <artifactId>Example</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>Example</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
Apache Maven について知るには、「Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集」という書籍もあります。Mavenに興味がある人は、購入を検討してみると良いかも。