EclipseとManven(m2e)を組み合わせた場合の最適解(と思われるもの)が得られたので記録。
知っている人には当たり前のことかもしれないし、試行錯誤の中で見つけた形なので間違いもあるかもしれない。
解決する課題
Maven(m2e)はMavenビルドで自動的に.classpathや.projectを書き換えるので、これらのファイルをどのようにソース管理するのかということについて解決する。
前提
開発環境は次の通り。
- Eclipse 4.5 Mars.2
- Maven3 (Eclipse用Maven統合 1.5 + Java8 support for m2e for Eclipse kepler SR2)
- Subversion 1.7
ソース管理はチーム開発することを前提に考えているが、Mavenやプロジェクトの設定は限定された人(管理者)しか実施しない前提。
というのも、メンバーはオフショア含めて40人規模。スキルはSubversionは使えるけど、Maven? ナニソレ?という人が多数、.NET上がりでEclipseにもあまり慣れていないという理由から。
結論
Mavenによって書き換えられるファイルの変更差分がでないように、svn:ignoreか、無視するソースに登録する。具体的には、次のように設定する。
ただし、Mavenやプロジェクトの設定をする管理者は .project 等をコミットする必要があるので、この限りではない。
ファイル | リポジトリ登録 | svn:ignore | 無視するソース |
---|---|---|---|
.project | する | しない | する(.project) |
.classpath | しない | する | しない |
.settings | しない | する | しない |
target | しない | しない | する(target, target/*) |
- svn:ignore : SVNリポジトリに登録するもの。
- 無視するソース : Eclipse > 設定 > チーム > 無視するソース に登録するもの。()内は登録パターン。
ポイント
.project だけは管理者がリポジトリ登録しておく。これでチェックアウトするだけで管理者の設定した通りの内容で、プロジェクトがMavenビルドできるようになる。
.classpath、.settings はMavenビルドで作られるので基本的にリポジトリ登録しない。
targetは svn:ignore に何故か設定できなかった(グレーアウト)なので「無視するソース」に追加。
補足
.settings 以下にはプロジェクト固有の情報が書かれるため、svn:ignore にしてしまうと困る場合があるかもしれない。自分は自社開発ツールが該当してしまった。
そのような場合は、.project と同様にリポジトリ登録するが、無視するソースに指定すると良さそう。
この辺は、まだ試行錯誤が必要に感じる。良い情報あったら教えて下さい。
以上