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