CIでのJava開発するためのmavenの逆引き的なもの
コマンドラインでJavaの開発したい。vimで開発したい等の要望が多々あれどググッてもググッてもEclipseの嵐でうんざり。とりあえず、コマンドラインでプロジェクトを作ってそれなりに開発するためにはmaven使うのが楽です。なので、基本的な使い方をメモっときます。
Debianの系統ならこれでinstallできます。
sudo aptitude install maven2
本当はmanとか公式ドキュメント見るのが正しいとは思うんですけどいきなりここにたどり着くのは無理じゃないかと思うからとっかかりと防備録的にかいておきます。
プロジェクトの生成
空ディレクトリをつくって次のコマンドを叩くとプロジェクトが生成されます。
mvn archetype:create -DgroupId=org.hoge -DartifactId=AppHoge -Dversion=0.0.1
コンパイル
mvn compile
テスト実行
compileも行われます。
mvn test
packageの生成
compile, testも行われます。
そのままpackageだけでも生成されますが、一度cleanしたほうがいいのでcleanはさんでいます。
mvn clean package
argsの渡し方
mvn exec:java -Dexec.mainClass=org.hoge.App -Dexec.args="args0"
依存パッケージの作成
mvn clean assembly:assembly
pom.xml
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>org.hoge.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
CLからの実行
mvn exec:java -Dexec.mainClass=org.hoge.App
Web用のサーバー起動
mvn jetty:run
pom.xmlにこういう記述がいります。
<build> <sourceDirectory>src/main/java</sourceDirectory> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> <contextPath>/</contextPath> <scanIntervalSeconds>10</scanIntervalSeconds> <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>8020</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin> </plugins> </build>
開発/本番でリソースの参照先を変更する
pom.xmlへidを指定してresourceの参照先ディレクトリを変える。
<profiles> <profile> <id>dev</id> <build> <resources> <resource> <directory>src/dev/resources</directory> </resource> </resources> </build> </profile> </profiles>
あとはIDを指定してパッケージを作成すると指定したリソースを参照した
パッケージが出来上がります。
mvn clean package -Pdev
Eclipseのプロジェクトへ変更
mvn eclipse:eclipse