Maven でプロジェクトの作成からビルド、実行までをやってみた
ちょっと Maven さわってみたので、備忘録として残し置きます。
やったのは、以下のドキュメントに書いてる「プロジェクト作成からビルドまで」ってところです。
最近ライブラリとかも Maven でやってくれ的なことになってて、今までは「jar で提供してダウンロードさせてくれよ」とか思ってましたが、今回触ってみて案外便利で、どっちかといえば Maven のほうがいいかもと今更ながらに思いました。( 遅い・・・ )
以下、やったことの手順です。
1. プロジェクトの作成
ドキュメントに記載の通り、以下のコマンド実行してプロジェクトを作成する。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
実行すると、may-app ディレクトリ配下にいろいろファイルが作られる ( 詳細はドキュメントを参照ください )。
2. コード書いたり、テストケース書いたり、pom.xml 変更したり
純粋に Maven 触るだけだったら不要な手順です。
今回はちょっとだけ変更加えてみました。
■ App.java
package com.mycompany.app; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; /** * Hello world! * */ public class App { private static final Logger logger = Logger.getLogger(App.class); public static void main( String[] args ) { App app = new App(); System.out.println("add : " + app.add(10, 20)); System.out.println("hello : " + app.hello("hoge")); DOMConfigurator.configure("log4j.xml"); logger.info("MAVEN TEST !!"); } public int add(int a, int b) { return a + b; } public String hello(String name) { return "hello " + name; } }
<?xml version="1.0" encoding="UTF-8"?> <log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="n1" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n"/> </layout> </appender> <root> <priority value ="info" /> <appender-ref ref="n1" /> </root> </log4j:configuration>
※ コンソールに渡された文字列出すだけです。my-app 配下にでも置いてやってください ( パス通ってればどこでもいいはずです )。
■ AppTest.java
- 略 - public void testApp() { App app = new App(); assertEquals(3, app.add(1, 2)); assertTrue("hello uga".equals(app.hello("uga"))); } - 略 -
※ 追加したメソッドのテストを追加してます。
■ pom.xml
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>my-app</name> <url>http://maven.apache.org</url> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>com.mycompany.app.App</mainClass> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> </project>
※ 依存関係のライブラリに Log4j を追加、mvn コマンドから Java 実行できる(?)プラグイン exec-maven-plugin を追加してます。
Exec Maven Plugin - Introduction
3. ビルドする
以下のコマンドでプロジェクトをビルドする。
mvn package
※ 何しかのフェーズでビルドエラーとかなってやり直す場合は、一回 mvn clean しておいたほうがいいのかな。
実行すると target ディレクトリができて、そこに jar ファイルやらいろいろ生成される。
4. 実行する。
mvn exec:java で実行してやる。
mvn exec:java
実行結果は以下の通り。一応、無事動いてそうであります。
add : 30 hello : hello hoge - 略 - MAVEN TEST !!
以上です。