既存のEclipseプロジェクトをMavenプロジェクトに変換


246

作業中のプロジェクトでは、Eclipse用のMavenプラグインを使用してビルドを自動化することを検討しています。現在、手順は本来よりもはるかに複雑であり、Mavenでワンクリックビルドに単純化できることを期待しています。

私の質問は、Mavenプラグインを使用して、既存のEclipse JavaプロジェクトをMavenプロジェクトに変換するためのウィザードまたは自動インポーターはありますか?または、新しいMavenプロジェクトを作成し、すべてのソースファイル、ライブラリなどを手動でコピーする必要があります。


3
既存のビルドはAntスクリプトを使用していますか?
matt b

4
あなたはおそらく受け入れられた答えを切り替える必要があります
Mr_and_Mrs_D

回答:


141

デフォルトのPOMを作成してm2eclipse機能を有効にしたい場合:インポートしようとしている代替の自動ビルドセットアップが現在ないことを想定し、m2eclipseプラグインについて話していることを想定しています。

m2eclipseプラグインは、プロジェクトに右クリックオプションを提供して、このデフォルトのpom.xmlを追加します。

新しいM2Eバージョン

プロジェクトを右クリック->サブメニュー設定-> Mavenプロジェクトに変換

古いM2Eバージョン

プロジェクト->サブメニューMaven->依存関係管理を有効にするを右クリックします。

これで、そのプロジェクトのプラグインを有効にする必要があります。


回答するには、 ' 自動インポーターまたはウィザードはありますか?':私が知っていることではありません。上記のオプションを使用すると、既存のプロジェクトでm2eclipseプラグインを有効にして、手動でのコピーを回避できます。自分で構築するために必要な依存関係やその他のものを実際に設定する必要があります。


M2Eclipseを有効にしますが、実際にはウィザードではなく、既存のEclipseプロジェクトをインポートしません。むしろ、依存関係などを選択するオプションをユーザーに提供します。これは、ユーザーがMavenの経験が少ない場合は難しい場合があります。
Kaleb Pederson、2010年

私は「m2eclipseプラグインを使用するために新しいプロジェクトを作成し、手動でデータをコピーする必要がありますか?」と質問を解釈しました。
ブラスター

16
右クリックメニュー(最新のm2eclipse)からはmavenメニュー項目を使用できません。成洞の回答が機能します。
wulfgarpro 2011

8
現在のバージョンのEclipse(4.2)およびm2eclipseでは、メニュー項目は[変換/ Mavenプロジェクトに変換]です。
Jesper 2013年

12
@Jesperのメニュー項目は「構成/ Mavenプロジェクトに変換」
angelcervera

293

m2e 0.13.0から開始します(以前の場合)、コンテキストメニューからJavaプロジェクトをMavenプロジェクトに変換できます。方法は次のとおりです。

  • Javaプロジェクトを右クリックして、コンテキストメニューをポップアップします。
  • 構成」>「Mavenプロジェクトに変換」を選択します

スクリーンショットの詳細な手順は次のとおりです


30
これはまだディレクトリ構造を作成せず、pomに依存関係を追加しません。
クラウスNji

2
m2eはまだmavenディレクトリ構造を作成せず、pomに依存関係を追加しませんか?
Mr_and_Mrs_D

2
下記の私の解決策(@ShriKant Vashishtha)は、ここで説明されているすべての問題を解決します。Maven構造を作成し、フォルダー名のスペースを削除し、pom.xmlを作成し、ソースフォルダーをMaven構造に移動します
ShriKant Vashishtha

当時、Windows 10 Eclipse Marsで完璧かつ完璧に動作します。
Matthis Kohli

それは私にぴったりです
WitnessTruth

12

私は同じ問題を抱えていて、約60のEclipseプロジェクトを含むEclipseワークスペース全体をMaveniseしたいと思っていました。これを手動で行うには多くの時間を要し、代替オプションはそれほど現実的ではありませんでした。この問題を解決するために、ついにgithubにeclipse-to-mavenというプロジェクトを作成しました。Eclipseには依存関係に関するすべての必要な情報がないため、次のことを行います。

  • <classpathentry/>.classpathファイル内のXML要素に基づいて、別のプロジェクトへの依存関係を作成し、ライブラリjarファイルを識別し、その名前(jakarta-oro-2.0.8.jarなど)に基づいてバージョンを識別します。現在artifactIdgroupId私はに基づく依存関係のMaven groupIdを返すことができるものを見つけることができなかったのと同じartifactIdです。これは完璧なソリューションではありませんが、Mavenizationを高速化するための適切な基盤を提供します。

  • それはMavenの慣習に従って(すべてのようにsrc/main/java)すべてのソースフォルダを移動します

  • スペースを含む名前を持つEclipseプロジェクトはLinux / Unix環境で処理するのが難しいため、スペースを含まない名前でも名前を変更します。

  • 結果のpom.xmlファイルには、依存関係と基本的なpom構造が含まれています。必要なMavenプラグインを手動で追加する必要があります。


面白い !ルナに移植されていますか?プロジェクトはまだEclipseプロジェクト(有効だろう.classpath.projectファイル)?プラグインを使用して単純なJavaSEプロジェクトをmavenizeする方法を回答に追加していただけますか?ディレクトリ構造の実際の変更は何ですか?
Mr_and_Mrs_D

申し訳ありませんが、ルナとは何なのかわかりません。プロジェクトのディレクトリ構造が変更されるため、これは有効なEclipseプロジェクトではなくなります。ただし、Mavenを使用して変更されたEclipse構成を作成するのは簡単です。これはプラグインではなくツールです。実行方法はプロジェクトのREADMEに既に記載されています。ディレクトリ構造は、Mavenの規則で変換されます。したがって、すべてのソースは、たとえばsrc / main / javaに移動します。
ShriKant Vashishtha 2014

ルナはEclipseの最新バージョンです!!
Mr_and_Mrs_D 2014

7

プロジェクト名を右クリック>構成> Mavenプロジェクトに変換>完了をクリックします。ここで、ダウンロードして必要なjarファイルを追加するためにいくつかの依存関係を追加します。

これにより、自動生成されたpom.xmlファイルが作成されます。そのファイルをEclipse形式のxml形式で開きます。ビルドタグ(</build>)の後に、依存関係を追加します。これは、Maven Webサイトからコピーしてそこに追加できます。これで準備完了です。これらの依存関係により、必要なjarファイルが自動的に追加されます。


1
これにより、mavenフォルダー構造が作成されますか?
Mr_and_Mrs_D

はい、適切にマップされたアーキタイプテンプレートと最小構成に基づいてmavenフォルダー構造を作成します。各プロジェクトの依存関係(.classpathから)を手動で1つずつ手動でPOM.xmlに追加する必要があります。
Pratap Singh

5

Chengdongの答えは正しいですConfigure>Convert to Maven Project。ただし、m2e 0.13.0から変換プロセスが大幅に改善されたため、追加する必要があります。m2e1.1+およびm2e-wtp 0.16.0+は、既存のEclipse設定をMavenプラグイン構成に変換できるようになりました。

:依存関係の変換の問題として、あなたがたM2eの変換プロセスに差し込まれた実験的な変換ウィザードが含まれ、JBossのツール(JBT)4.0 Mavenの統合機能を試すことができhttp://docs.jboss.org/tools/whatsnew/maven/をmaven-news-4.0.0.Beta1.html

それはあなたのMaven変換プロセスのブートストラップに大いに役立つはずであるので、それは究極のソリューション(何もできない)であるふりをしません。

また、参考までに、m2eの変換プロセスを強化するためのアイデアをいくつか紹介します。Mavenレイアウトを使用するためのリファクタリングは、おそらく将来実装される予定です。

JBT 4.0(Eclipse JavaEE Junoが必要)は、http://download.jboss.org/jbosstools/updates/stable/juno/またはEclipse Marketplaceからインストールできます。


4

必要なのは、多かれ少なかれ、gitからプロジェクトをインポートするとき、それはMavenプロジェクトではないため、Mavenの依存関係がビルドパスに含まれていないためです。

一般的なプロジェクトをMavenプロジェクトに変えるために私が行ったことは次のとおりです。

一般的なプロジェクト-> javaプロジェクトプロジェクトを右クリックし、プロパティ->プロジェクトファセットをクリックして、[java]をクリックします。この手順により、一般的なプロジェクトがJavaプロジェクトに変わります。

javaプロジェクト-> mavenプロジェクト右クリックプロジェクト、構成-> mavenプロジェクトに変換この時点では、maven依存関係libはまだビルドパスにありません。プロジェクトプロパティ、ビルドパス、ライブラリの追加、Maven依存関係ライブラリの追加

数秒待って、依存関係が読み込まれると、プロジェクトの準備が整います。


2

JavaプロジェクトをSBT / Mavenプロジェクトに変換するコマンドラインプログラムがあります。

すべてのjarを解決し、SHAチェックサム、クラスパス、またはファイル名に基づいて正しいバージョンを見つけようとします。次に、動作する構成が見つかるまで、ソースをコンパイルしようとします。依存関係構成ごとに実行するカスタムタスクも指定できます。

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver


これは非常に魅力的なオプションのように見えます。ただし、現在パッケージ化されているため、あまりアクセスできません。source.codeをパッケージ化してデプロイする方法は明らかではありません。ほとんどのJava開発者はScala開発者ではなく、SBTがコミュニティ内で広く使用されているツールでもありません。
A.リック、

1

私の質問は、Mavenプラグインを使用して、既存のEclipse JavaプロジェクトをMavenプロジェクトに変換するためのウィザードまたは自動インポーターはありますか?

私の知る限り、Eclipseプロジェクトを自動的にMavenプロジェクトに変換するものはありません(つまり、レイアウトを変更し、POMを作成し、「生成」してメタデータをフィードし、ライブラリとそのバージョンを検出してPOMに追加します、など)。Eclipseには、これを可能にする(まさにこれがPOMの要点です)ため、および/または適切な結果を生成するための十分なメタデータがありません。

または、新しいMavenプロジェクトを作成し、すべてのソースファイル、ライブラリなどを手動でコピーする必要があります

それは私の意見では最良の選択肢でしょう。Mavenプロジェクトを作成し、ソース、リソース、テスト、リソースをそれぞれのディレクトリにコピー/移動し、依存関係を宣言します。


この回答が+199の回答よりも高いのはなぜですか?私はそれを見たことはほとんどありませんでした
Evorlor 2015

1

Gradleへの変換はMavenに類似しています。

プロジェクトを右クリック->サブメニュー設定-> Gradle(STS)プロジェクトに変換


4
回答は質問には関係ありません
Ripon Al Wasim

1
Gradleを探してこの質問を見つけました。個々のケースに対する質問は存在しないため、質問されたOSではなく他のOSの回答を追加すると役立つことがよくあります。Gradleに関しては、私が役立つと思うことに答えるために新しい質問を作成するのではなく、これを投稿します。ありがとうございます。それでは、お元気で。
別の
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.