m2eclipseでmavenプロジェクトをつくってみる
m2eclipseのインストール
何故m2eclipseかは深く考えていない。前にいいよ、っていわれたので。
EclipseのHelp>Install New Softwareにhttp://m2eclipse.sonatype.org/sites/m2e を追加してインストールするだけ。
早速プロジェクトをつくってみる
File>New>Maven
からMaven Projectを選んでNext。
チェックアウトとかモジュールもあとでやってみよう。
archetypeってのがいわゆるスニペットというかテンプレートというかな雰囲気だが
とりあえずはまんまでつくってみることにしたいので
Create a simple projectにチェックしとく。
NextいくとなんかGroup IdとかArtifact Idをいれろといわれる。
グループ Id(groupId)はプロジェクトを一意に識別する名前で、プロジェクトのルートパッケージ名を指定するのが一般的です。
アーティファクト Id(artifactId)はプロジェクトの成果物の名前です。JARやWARにつける名前を指定してください。
http://d.hatena.ne.jp/Kishi/20090228/1235813480
ってあったんだけどhttp://maven.ozacc.com/みるとなんか適当くせぇ。
とりあえずgroup idをmaven-test、artifact idはmaven-sample01とかにしてpackageはjarにしてみる。
なんか空白あるけどまぁいいかってFinishするとなんかmavenがごにょごにょ動いてプロジェクトができる。
おお。できた。
依存性を追加してみる
プロジェクトのコンテキストメニューからMaven>Add Dependency
なんかcommons-langとかいれてみると候補が出て・・・こなかった。
RepositoryのIndexをUpdateしなきゃなんだがなんか失敗する。
フォーラムみてたら日によって発生とか書いてあったwので
とりあえずは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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven-test</groupId> <artifactId>maven-sample01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> </dependencies> </project>
するとまたmavenがなんかごにょごにょして、commons-langが使えるようになっている!!
package maventest; import org.apache.commons.lang.StringUtils; public class Sample01 { private static final String PREFIX = "hoge_"; public static void main(String[] args) { System.out.println(new Sample01().addPrefix("test")); } public String addPrefix(String str) { if(StringUtils.isBlank(str)) return PREFIX; return PREFIX + str; } }
ちゃんとコンパイル通る。
テストもつけてみよう。今度は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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>maven-test</groupId> <artifactId>maven-sample01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3</version> <scope>test</scope> </dependency> </dependencies> </project>
junitのdependencyを追加したんだけど、今度はscopeを指定してみた。testだとテストのときしか依存性ができない。
package maventest; import static org.junit.Assert.*; import org.junit.Test; public class Sample01Test { @Test public void testAddPrefix() { String prefix = "hoge_"; String input = "maventest"; assertEquals(prefix + input, new Sample01().addPrefix(input)); } }
普通にJUnit動かすんじゃなくて、mavenのtestを実行してみる。
Run AsからMaven実行して、goalをtestにしてみる。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
おお。動いてるっぽいぞ。
今度はわざと失敗してみる。
@Test public void testAddPrefix() { String prefix = "baka_"; String input = "maventest"; assertEquals(prefix + input, new Sample01().addPrefix(input)); }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
おおおお。ちゃんと失敗した。