pom.xmlの依存ライブラリを.classpathに反映させるMavenプラグインを試験公開します
id:jflute さんのエントリがきっかけでニーズがありそうなことがわかったので、少し前に個人的に作ったMavenプラグインを試験公開します。
どんなプラグイン?
ひと言でいうと、Mavenのeclipseプラグインとdependencyプラグインを足して2で割ったような機能を提供します。eclipse+classpathを文字って「eclipath」プラグイン。(相変わらずネーミングセンスありませんね。良いアイデア募集)
具体的には、pom.xmlに記述された依存ライブラリをeclipseプロジェクト上にコピーして、.classpath にクラスパスを追加します。ついでにソースやJavadocもあれば自動的にアタッチします。
pom.xmlの依存ライブラリを.classpathに反映させるだけならば mvn eclipse:eclipse でできますが、これだと既存の .classpath を再生成して上書きされてしまいます。eclipathプラグインは、既存の .classpath を読み込んで変更点だけ修正するので、eclipse に優しく、かつ依存ライブラリ管理ははpom.xmlに集約できます。
使い方
本プラグインは seasar.org にて公開させていただいているので、pom.xml の pluginRepositoryにseasar.orgを追加してください。
maven.seasar.org The Seasar Foundation Maven2 Repository http://maven.seasar.org/maven2
あとは、plugins 要素の中に以下のように maven-eclipath-plugin を追加するだけ。
最低限ならこれだけで設定完了。
・・・・ ・・・・ org.seasar.uruma maven-eclipath-plugin
あとは、コマンドラインから
mvn eclipath:sync
と打ちます。これで、pom.xmlの依存ライブラリ(jar)が eclipse プロジェクト配下の lib ディレクトリにコピーされ、.classpath にそれらのjarへの参照が自動設定されます。.classpathを読み込んで差分だけ更新して書き戻す仕様なので、独自にクラスパスコンテナなどを設定していても、それらの設定は残されます。
依存ライブラリが増えたり、バージョンアップしたときも、pom.xml を更新して eclipath:sync。新しいバージョンのjarを.classpathに追加して、古いものは削除します。
ただし、安全のため古いバージョンのjar自体はeclipseプロジェクトから削除しません。古いバージョンのjarを削除したいときは、
mvn eclipath:clean
でjarファイルを削除します。
何が削除されるか事前に確認したいときは、
mvn eclipath:check-clean
で削除するファイルの一覧だけ表示します。
また、pom.xmlの packaging もチェックしているので、Webアプリケーションで
さらにscopeもチェックしているので、scopeがprovidedやtestになっているjarは、src/main/web/WEB-INF/lib ではなく、lib にコピーしたりします。(この辺のコピー先は細かく制御しようとすると設定が面倒になるので、eclipathプラグインで勝手にポリシーを決めています。利用者が多そうならば、すこしずつブログで紹介します)
もうちょっと細かい機能もいくつかありますが、とりあえず最低限の使い方を紹介してみました。
現時点での制限事項
- 利用者の皆様のご意見や、作者の気まぐれでプラグイン名や仕様は変更する可能性があります
- マルチモジュールプロジェクトではまだ試していませんので不具合がでるかもしれません
- Maven3.0では一切動作試験していません
- Windows環境でしか試験していません
- mvn eclipse:eclipse と違って、.classpathをゼロから生成する機能は提供していません。(依存ライブラリに関する pom.xml と .classpath の同期を取ることに特化しています)
- ソースコードのJavadocは英語で書こうと頑張って途中で面倒になりました(笑)
要望/不具合報告などあればコメントいただければ対応検討します。(今あまり時間が取れないので、対応が遅くなる可能性大ですが・・・)