Maven2
test
-
testをskipする。「-Dmaven.test.skip=true」
-
test対象を指定する。「-Dtest=hoge」ワイルドカードも使える。
-
testの失敗を無視して続行する。「-Dmaven.test.failure.ignore=true」
オプション
-
pluginのupdateを確認しつつ実行
-
「-U」オプション
-
offlineモード
-
「-o」オプション
-
ヒープサイズの指定
-
環境変数「MAVEN_OPTS」に「-Xmx128m」とか。
Snapshotについて
version番号に"+-SNAPSHOT"にマッチする文字列を指定する事で、通常のartifactとは違う配布方式をとる事ができる。
deployする側
-
//distributionManagement/snapshotRepositoryで設定したServerに配布される。
-
//distributionManagement/snapshotRepository/uniqueVersionに"true"を設定すると、配布する時のjar名が"artifactId-+-SNAPSHOT.jar"ではなく、"artifactId-+日付.時刻.jar"となる。
<distributionManagement>
<snapshotRepository>
<id>ftp-hoge</id>
<url>ftp://hoge/fuga</url>
</snapshotRepository>
</distributionMangement>
使用する側
-
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
-
pom.xml内で省略されている、default設定を出力
-
mvn projecthelp:effective-pom
-
読み込んだsetting.xmlを出力
-
mvn help:effective-settings -Doutput=effective-settings.xml
-
artifactの作成
-
mvn archetype:create -DgroupId=${groupId} -DartifactId=${artifactId}
-
[TODO]最近、どのマシンだかで使った場合に対話形式でGroupIdとかを設定できたんだが…?
-
「archetypeArtifactId」属性でarchetypeの種類を指定できる。maven-archetype-webappならwebappとか。maven標準でないarchetypeArtifactを使う場合は「archeTypeGroupId」の指定も必要。
-
生成物を全部削除して、ソースとjarをinstall
-
mvn clean source:jar install
-
ソースをパッケージ(pom.xmlも含む)
-
mvn assembly:assembly -DdescriptorId=src
-
依存jarも含めてパッケージ
-
mvn assembly:assembly -DdescriptorId=jar-with-dependencies
-
EclipseのworkspaceにM2_REPOを設定する。
-
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を指定する。
親子関係の注意点
-
parentproject\trunk
-
pom.xml
-
subproject1
-
pom.xml(parentprojectをparentとして指定)
-
subproject2
-
...
こんな構成のとき、subproject1のみinstallしても、親のpom.xmlがリポジトリに無いときに別projetからsubproject1を解決できない。当たり前といえば当たり前だが、手を抜こうとして最初はまった。
最終更新:2008年05月12日 15:47