Maven」カテゴリーアーカイブ

Maven2でローカルリポジトリを指定してビルドする

コマンド引数に-Dmaven.repo.local=ディレクトリを追加する。
1環境で複数ソースのビルドをするときとかは、
専用にローカルリポジトリを指定してあげる。

mvn package -Dmaven.repo.local=ディレクトリ

ちなみに、デフォルトのローカルリポジトリは「.m2/settings.xml」で指定すればOK

Mavenで開発中のバージョンを追う(jarファイルの更新日でDLの判断する)

・SNAPSHOTバージョン

 

SNAPSHOTバージョンとは、ある目標のバージョンに向けて現在進行形で開発が進むバージョンのことです。
以下の書式で表します。

<バージョン番号>-SNAPSHOT

例えば、”1.0-SNAPSHOT”とはバージョン1.0の開発途中のバージョンになります。
SNAPSHOTバージョンを依存ライブラリに指定した場合、Mavenは通常のバージョン指定とは異なる動きをします。
通常のバージョン指定の場合、一旦ローカルリポジトリに指定されたバージョンのライブラリがダウンロードされると、ずっとそれが参照されます。
一 方、SNAPSHOTは開発が現在進行形で進められているので、その内容は日々アップデートされていきます。Mavenは一旦ローカルリポジトリに取り込 んだ後でも、もしもリモートリポジトリにあるライブラリのファイル更新日付がローカルよりも新しい場合、ローカルのライブラリファイルをリモートのもので 上書きします。
サブプロジェクト単位で複数のチームに分かれて共同作業を行う場合、常に他のチームの最新の開発成果物(Mavenアーティファクト)を自分のプロジェクトに取り込んで参照することができます。

http://www7.atwiki.jp/gaoqiao1/pages/8.html

・バージョンレンジ(Version Range)

今度は正式リリースされたライブラリをディペンデンシーに指定する場合を考えます。たとえ正式リリースされたライブラリであったとしても、バグフィックスや機能追加・変更によるバージョンアップは頻繁に行われます。
依存するライブラリのバージョンを自動的に追跡するしくみがバージョンレンジ(Version Range)と呼ばれる機能です。
以下のような書式になります。

[1.0,)

こ の例ではバージョン1.0以上の最新のバージョンに依存するようになります。例えばローカルリポジトリにバージョン1.0が置かれているときに、リモート リポジトリに最新の1.0.1が公開されたとします。すると次回からのビルドでは、1.0.1が自動的にダウンロードされて参照されるようになります。 (※厳密には、settings.xmlのupdatePolicyによって更新タイミングが変わってきます。)
バージョンレンジは一見とても便利に思えます。
し かし自動更新の際、開発者に対して何の確認も行われずにバージョンアップが行われてしまうので、開発者自身そのことに気がつかないこともあります。ある日 突然ビルドがうまくいかなくなった、あるいは開発中のプログラムの動作がおかしくなった・・・そして苦労した挙げ句、結局知らず知らずのうちに行われた依 存ライブラリのバージョンアップが原因だったということにもなりかねません。
バージョンレンジの利用は注意して行うべきでしょう。

Maven2でcoberturaがパースエラーで落ちるときのエラー対処方法

だいぶ苦戦したのでメモ。
Maven2でカバレッジ計測ツールといったらcoberturaが大御所なのに、
情報が全然なくて大変だった。

対処方法

・エラー内容
UTF-8 で “(” を含んだ文字列 があるとエラーで落ちる。
なので、だいたいのPJで落ちる。

・対処方法
対処方法の詳しい方法は以下のURLを参照。
http://d.hatena.ne.jp/couger/20110705/1309871425

補足。

・cobertura のチェックアウト

svn co https://cobertura.svn.sourceforge.net/svnroot/cobertura/trunk/cobertura 

トータスsvnを使ってチェックアウト or エクスポートでもおk

・ビルド

cd [チェックアウトしたルートフォルダ]
ant

antを行うとJUnitのテストが失敗してエラーは出ているが、ビルドは成功しているので確認する。

ビルド後、cobertura.jarをMavenローカルリポジトリに名前を変更して配置する。

/[local repo path]/net/sourceforge/cobertura/cobertura-X.X.X.jar

・Mavenでcoberturaの実行

cd [PJルートパス]
mvn cobertura:cobertura