Maven2

test

  1. testをskipする。「-Dmaven.test.skip=true」
  2. test対象を指定する。「-Dtest=hoge」ワイルドカードも使える。
  3. testの失敗を無視して続行する。「-Dmaven.test.failure.ignore=true」

オプション

  1. pluginのupdateを確認しつつ実行
    1. 「-U」オプション
  2. offlineモード
    1. 「-o」オプション
  3. ヒープサイズの指定
    1. 環境変数「MAVEN_OPTS」に「-Xmx128m」とか。

Snapshotについて

version番号に"+-SNAPSHOT"にマッチする文字列を指定する事で、通常のartifactとは違う配布方式をとる事ができる。

deployする側

  1. //distributionManagement/snapshotRepositoryで設定したServerに配布される。
  2. //distributionManagement/snapshotRepository/uniqueVersionに"true"を設定すると、配布する時のjar名が"artifactId-+-SNAPSHOT.jar"ではなく、"artifactId-+日付.時刻.jar"となる。
    <distributionManagement>
      <snapshotRepository>
        <id>ftp-hoge</id>
        <url>ftp://hoge/fuga</url>
      </snapshotRepository>
    </distributionMangement>
    

使用する側

  1. repositories/repository/snapshots/updatePolicy要素に"always"を設定する事で「常に最新かどうかのチェックを行う」という動作をしてくれる。
    <repositories>
      <repository>
        <id>shin1</id>
        <url>http://hoge.fuga.com/shin1</url>
        <snapshots>
          <updatePolicy>always</updatePolicy>
        </snapshots>
      </repository>
    </repositories>
    

各plugin

  1. pom.xml内で省略されている、default設定を出力
    1. mvn projecthelp:effective-pom
  2. 読み込んだsetting.xmlを出力
    1. mvn help:effective-settings -Doutput=effective-settings.xml
  3. artifactの作成
    1. mvn archetype:create -DgroupId=${groupId} -DartifactId=${artifactId}
    2. [TODO]最近、どのマシンだかで使った場合に対話形式でGroupIdとかを設定できたんだが…?
    3. 「archetypeArtifactId」属性でarchetypeの種類を指定できる。maven-archetype-webappならwebappとか。maven標準でないarchetypeArtifactを使う場合は「archeTypeGroupId」の指定も必要。
  4. 生成物を全部削除して、ソースとjarをinstall
    1. mvn clean source:jar install
  5. ソースをパッケージ(pom.xmlも含む)
    1. mvn assembly:assembly -DdescriptorId=src
  6. 依存jarも含めてパッケージ
    1. mvn assembly:assembly -DdescriptorId=jar-with-dependencies
  7. EclipseのworkspaceにM2_REPOを設定する。
    1. maven eclipse:add-maven-repo -Declipse.workspace=XXXXXX

依存性の定義について

maven公式|http://maven.apache.org/pom.html#Dependencies

optional

他から依存されたときに、無駄に依存を強制しないようにするため。例えば、自分は必ずhoge.jarが必要だが、自分に依存するartifactは必ずしも必要ないかもしれない、といった場合にoptional=trueを設定しておくと、行儀が良いかもしれない。

dependency/exclusions/exclusion

依存先の依存を引っ張ってこないようにする時は、ここで無視したいgroupIdとartifactIdを指定する。

親子関係の注意点

  1. parentproject\trunk
    1. pom.xml
    2. subproject1
      1. pom.xml(parentprojectをparentとして指定)
    3. subproject2
    4. ... こんな構成のとき、subproject1のみinstallしても、親のpom.xmlがリポジトリに無いときに別projetからsubproject1を解決できない。当たり前といえば当たり前だが、手を抜こうとして最初はまった。
最終更新:2008年05月12日 15:47