ぺーぺーSEのブログ

備忘録・メモ用サイト。

Maven2、Maven3のPOMの書き方まとめ〜環境情報設定編〜

参考:http://maven.apache.org/pom.html

blog.pepese.com


■概要

<project ...>

  <issueManagement>
    <system>...</system>
    <url>...</url>
  </issueManagement>

  <ciManagement>
    <system>...</system>
    <url>...</url>
    <notifiers>
      <notifier>
        <type>...</type>
        <sendOnError>...</sendOnError>
        <sendOnFailure>...</sendOnFailure>
        <sendOnSuccess>...</sendOnSuccess>
        <sendOnWarning>...</sendOnWarning>
        <configuration>
          <address>...</address>
        </configuration>
      </notifier>
    </notifiers>
  </ciManagement>

  <mailingLists>
    <mailingList>
      <name>...</name>
      <subscribe>...</subscribe>
      <unsubscribe>...</unsubscribe>
      <post>...</post>
      <archive>...</archive>
      <otherArchives>
        <otherArchive>...</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>...</connection>
    <developerConnection>...</developerConnection>
    <tag>...</tag>
    <url>...</url>
  </scm>

  <prerequisites>
    <maven>...</maven>
  </prerequisites>

  <repositories>
    <repository>
      <releases>
        <enabled>...</enabled>
        <updatePolicy>...</updatePolicy>
        <checksumPolicy>...</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>...</enabled>
        <updatePolicy>...</updatePolicy>
        <checksumPolicy>...</checksumPolicy>
      </snapshots>
      <id>...</id>
      <name>...</name>
      <url>...</url>
      <layout>...</layout>
    </repository>
  </repositories>

  <pluginRepositories>
    <repository>...</repository>
  </pluginRepositories>

  <distributionManagement>
    ...
    <downloadUrl>...</downloadUrl>
    <status>...</status>
    ...
    <repository>
      <uniqueVersion>...</uniqueVersion>
      <id>...</id>
      <name>...</name>
      <url>...</url>
      <layout>...</layout>
    </repository>
    <snapshotRepository>
      <uniqueVersion>...</uniqueVersion>
      <id>...</id>
      <name>...</name>
      <url>...</url>
      <layout>...</layout>
    </snapshotRepository>
    ...
    <site>
      <id>...</id>
      <name>...</name>
      <url>...</url>
    </site>
    ...
    <relocation>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>...</version>
      <message>...</message>
    </relocation>
  </distributionManagement>

  <profiles>
    <profile>
      <id>...</id>
      <activation>
        <activeByDefault>...</activeByDefault>
        <jdk>...</jdk>
        <os>
          <name>...</name>
          <family>...</family>
          <arch>...</arch>
          <version>...</version>
        </os>
        <property>
          <name>...</name>
          <value>...</value>
        </property>
        <file>
          <exists>...</exists>
          <missing>...</missing>
        </file>
      </activation>
      <build>...</build>
      <modules>...</modules>
      <properties>...</properties>
      <repositories>...</repositories>
      <pluginRepositories>...</pluginRepositories>
      <dependencies>...</dependencies>
      <reporting>...</reporting>
      <dependencyManagement>...</dependencyManagement>
      <distributionManagement>...</distributionManagement>
    </profile>
  </profiles>

</project>

issueManagement要素

バグ管理システム等の情報を設定する。

■設定例

<issueManagement>
  <system>Bugzilla</system>
  <url>http://127.0.0.1/bugzilla/</url>
</issueManagement>

ciManagement要素

CIツール(Jenkins)の情報を設定する。

■設定例

<ciManagement>
  <system>continuum</system>
  <url>http://127.0.0.1:8080/continuum</url>
  <notifiers>
    <notifier>
      <type>mail</type>
      <sendOnError>true</sendOnError>
      <sendOnFailure>true</sendOnFailure>
      <sendOnSuccess>false</sendOnSuccess>
      <sendOnWarning>false</sendOnWarning>
      <configuration><address>continuum@127.0.0.1</address></configuration>
    </notifier>
  </notifiers>
</ciManagement>

mailingLists要素

プロジェクトに関わる開発者やユーザへ送付するメーリングリストの情報を設定する。

■設定例

<mailingLists>
  <mailingList>
    <name>User List</name>
    <subscribe>user-subscribe@127.0.0.1</subscribe>
    <unsubscribe>user-unsubscribe@127.0.0.1</unsubscribe>
    <post>user@127.0.0.1</post>
    <archive>http://127.0.0.1/user/</archive>
    <otherArchives>
      <otherArchive>http://base.google.com/base/1/127.0.0.1</otherArchive>
    </otherArchives>
  </mailingList>
</mailingLists>

scm要素

SCMはSoftware Configuration ManagementやSource Code/Control Managementの略。
SVN等の情報を設定する。

■設定例

<scm>
  <connection>scm:svn:http://127.0.0.1/svn/my-project</connection>
  <developerConnection>scm:svn:https://127.0.0.1/svn/my-project</developerConnection>
  <tag>HEAD</tag>
  <url>http://127.0.0.1/websvn/my-project</url>
</scm>

prerequisites要素

前提条件の情報を設定する。

■設定例

<prerequisites>
  <maven>2.0.6</maven>
</prerequisites>

repositories要素

リポジトリ一覧を定義します。

■設定例

<repositories>
  <repository>
    <releases>
      <enabled>false</enabled>
      <updatePolicy>always</updatePolicy>
      <checksumPolicy>warn</checksumPolicy>
    </releases>
    <snapshots>
      <enabled>true</enabled>
      <updatePolicy>never</updatePolicy>
      <checksumPolicy>fail</checksumPolicy>
    </snapshots>
    <id>codehausSnapshots</id>
    <name>Codehaus Snapshots</name>
    <url>http://snapshots.maven.codehaus.org/maven2</url>
    <layout>default</layout>
  </repository>
</repositories>
<pluginRepositories>
  ...
</pluginRepositories>

distributionManagement要素

プロジェクトの配布やリモートリポジトリへの配備に関する情報を設定する。

  • downloadUrl
    • プロジェクトのダウンロードページを定義します。
  • status
    • リモートリポジトリにある成果物の状態を定義する。
    • none / converted / partner / deployed / verified から選択する。
    • デフォルトは「none」。
  • repository
    • 「mvn deploy」した際にRELEASEバージョンのプロジェクトをデプロイするリモートサーバ(NexusなどのMavenリポジトリサーバ)の情報を設定する。
  • snapshotRepository
    • 「mvn deploy」した際にSNAPSHOTバージョンのプロジェクトをデプロイするリモートサーバ(NexusなどのMavenリポジトリサーバ)の情報を設定する。
  • site
    • 「mvn site-deploy」でプロジェクトのWebサイトファイルをデプロイするのに必要な情報を設定する。
  • relocation
    • 成果物が新しいID/グループIDに移動したときのリローケーション情報を設定する。

■設定例

<distributionManagement>
  <downloadUrl>http://mojo.codehaus.org/my-project</downloadUrl>
  <status>deployed</status>
  <repository>
    <uniqueVersion>false</uniqueVersion>
    <id>MyRelease</id>
    <name>Release Repository</name>
    <url>http://[FQDN]:8081/nexus/content/reositories/my-releases/</url>
    <layout>default</layout>
  </repository>
  <snapshotRepository>
    <uniqueVersion>true</uniqueVersion>
    <id>MySnapshot</id>
    <name>Snapshot Repository</name>
    <url>http://[FQDN]:8081/nexus/content/reositories/my-snapshots/</url>
    <layout>legacy</layout>
  </snapshotRepository>
  <site>
    <id>mojo.website</id>
    <name>Mojo Website</name>
    <url>scp://beaver.codehaus.org/home/projects/mojo/public_html/</url>
  </site>
</distributionManagement>

profiles-profile要素

mvnコマンドを実行した際に「-P」オプションでアクティブにするプロパティ群の定義を行う。

  • id
    • profile要素の識別子を設定する。
    • 例えば、「mvn compile -P hoge」と実行した場合、id要素が「hoge」のprofileが有効となる。
  • activation-activeByDefault
    • 「-P」での指定が無い場合、この要素が「true」のprofileがデフォルトで有効となる。
  • activation-jdk
    • JDKのバージョンを指定する。
  • activation-os
    • OSの情報を設定する。
  • activation-property
    • 「-P」で指定した際に有効にしたいプロパティを「key - value」形式で設定する。
    • また、activation-property要素ではなくではなく、profile直下のproperties要素でプロパティを設定することもできる。
  • activation-file
    • exists要素には読み込みタイプロパティファイルを設定する。
    • もしexists要素のプロパティファイルが存在しなかった場合に読み込むファイルをmissing要素へ設定する。

■設定例

<profiles>
  <profile>
    <id>test</id>
    <activation>
      <activeByDefault>false</activeByDefault>
      <jdk>1.5</jdk>
      <os>
        <name>Windows XP</name>
        <family>Windows</family>
        <arch>x86</arch>
        <version>5.1.2600</version>
      </os>
      <property>
        <name>sparrow-type</name>
        <value>African</value>
      </property>
      <file>
        <exists>${basedir}/file2.properties</exists>
        <missing>${basedir}/file1.properties</missing>
      </file>
    </activation>
    ...
  </profile>
</profiles>