情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Eclipseの既存プロジェクトをMavenプロジェクトに変換する(1):変換方針と変換手順

Eclipse (60) Java (38) Maven (19)

Antを使ってビルドされているOSSをEclipseで閲覧・編集して、後からMavenで管理したいなーと思ったときのお話。

ディレクトリ構造を変えるべきか

Mavenはディレクトリ構造が特殊で、いろいろな記事を読んでも「Mavenの作法に従うべき」と書かれています。

一方で、このディレクトリ構造って、Mavenで管理しているプロジェクト以外だとまずやらないであろう、ちょっと特殊なディレクトリ構造なので、たまたま変換したいAntプロジェクト(今回はOverlayWeaver)がそんなディレクトリ構造になっているはずもありません。

あとあとOverlayWeaverがバージョンアップされたときにその変更内容をマージしたいと思ったら、そのディレクトリの違いが結構厳しい・面倒なのではないかと考えると(バージョン管理にはGitを使用)、できるだけディレクトリ構造の大幅な変更はしたくないわけです。

そこで、ディレクトリ構造は変更しない方針で、好き勝手なディレクトリ構造をMavenで利用する方法について試行錯誤してみました。

前提

Antを利用しているプロジェクトをEclipseにインポート済みだとします。また、Gitで管理できるように(コミットできるように)までしていたとします。

Mavenプラグインのインストール

実は、現在のEclipse for Java Developers Juno(4.2)やIndigo(3.7)には、始めからMaven用のEclipseプラグインm2eがインストールされています。なので、特にインストール作業は必要有りません。

移行方法が2種類ある?

既存のEclipseプロジェクトをMavenに移行しようと思うと、

  • A.「プロジェクト右クリック>Configure>Convert to Maven Project」から「Create new POM」を開く方法
  • B.「プロジェクト右クリック>New>Other...>Maven>Maven Project>Next」で「New Maven Project」を開く方法

の2通りがすぐに見つかります。

【失敗した手順】 B. New Maven Project

こちらを選ぶと、「Use default Workspace location」に、現在ソースが配置されているディレクトリ(Gitを使っているので、通常のWorkspaceではなく、Gitレポジトリのワーキングディレクトリ)が初期設定されます。なんとなくこの表示が「A.」より安心感がありました。

そのまま初期設定で特に問題がなさそうだったので、「Next」。

しかし、次の画面でテンプレートとなるMavenアーキタイプの選択を迫られてしまい、今更ながら「完全に新規作成だ」と気がつき操作をやめ、「A.」へ。

【正しい手順】 A. Create New Pom

最初の画面で「Artifact」の「Group Id」「Artifact Id」「Version」の入力を求められます。ここで役に立つのが、GroupIDやArtifactIDの命名規則について説明されている文章です。

Group ID・Artifact ID・Versionを決める

これによると、次のようにすればよさそうです。

  • groupId:すべてのプロジェクトと重複しないようにする。(例:ドメインを使ったパッケージ名のようにする)
  • artifactId:バージョンを除いたjarファイルの名前にする。ファイル名に使えない文字に注意。
  • version:ドット区切りでバージョン番号を付けられる(例:1.0, 1.1, 0.0.1)。ただし、日付を用いたバージョンをここでは利用しないこと。

ここではデフォルトである「プロジェクト名」「プロジェクト名」「0.0.1-SNAPSHOT」に設定してしまいました。

残りもデフォルトのまま

残りは「Packaging」「Name」「Description」がありますが、それぞれデフォルトの「jar」「(空白)」「(空白)」にしました。

ちなみに、「jar」のところにはプルダウンの選択肢として「pom」と「war」がありました。これは最終的な成果物を指定する部分で、Mavenの動作(life cycleと呼ばれる動作)を大きく変える設定なので、適切なものを選んでください。

これらを入力したらもう「Finish」です。

最低限の変換完了

これで最低限の変換が完了しました。次回はまず、この作業で既存のプロジェクトがどのように変わったのか、新しく作成されたファイルの正体は何なのかをチェックしたいと思います。

コメント(0)

新しいコメントを投稿