2009-03-26 21 views
13

私たちのソフトウェアはJavaで書かれており、多くの(7)のプロジェクトで構成されています。Netbeansのantからmavenへの移行

これらのプロジェクトはNetbeansのAntプロジェクトです。 私はそれらをmaven2に変換することを検討しています。

このようなことのヒントはどこにありますか?

答えて

0

移行が不要であることを発見しました。私が必要とする本当の要件は、依存関係(ライブラリ)の自動ダウンロードでした。

これはまた、Ivyによって達成されますが、それでもなおmavenリポジトリを使用します。

私はでantからant + ivyへのプロジェクト変換を解決しました。

+0

IvyBeansは維持されていないようです。これは最新のnetbeansバージョンで動作しますか? – Radan

0

これは、Maven2がファイルを特定の方法で整理することを期待しているため、簡単な作業ではありません。とにかくBetter Builds with Mavenはあなたを始めてくれる無料の本です。 Mavenを理解するのに役立ちます。また、移行に関する章もあります。

14

この本を読まないでください。それはあなたを混乱させるだけです。代わりにこの本を読む: "Maven - 決定的なガイド" http://www.sonatype.com/books/maven-book/reference/

また、mavenサイトには多くの情報がありますが、構造がひどいので、Googleでナビゲートする必要があります。

  1. はない "オートマジック" で、手でこれを行いIDEから "ヘルプ":

    は、ここに私の提案です。 Mavenの統合はまだうまくいくわけではなく、どんなIDEでも機能しません。

  2. プロジェクトをプログラミングするには、共通のアンブレラモジュールの下でモジュールに分割して、各モジュールがそのアーティファクトの背後にあるソースコードのjavadocを伴った単一のバイナリアーチファクト(jar、war、...) 、ソースコードを含むzipなどがあります。基本的な原則は、各モジュールがそのモジュールの下にあるすべての非テストコードを含む単一の成果物を生成することです。これはプロジェクトがantによって構築されている間に行うことができます。

  3. 各モジュールは標準的なディレクトリレイアウトに準拠する必要があります。ビルド先は、[module]/target/[output-type、 "クラス"]。ソースコードは[module]/src/main/[src-type。 "java"]と[module]/test/[src-type]を入力します。成果物は、src/mainの下にあるすべてのコードと、src/testの下にあるコードで構成されています。あなたはまだantで構築されている間にこれを行うことができます。

  4. プロジェクトの他のモジュールに依存しないサブモジュールを変換することから始めます。

  5. ここで、以下のモジュールの1つで構成される、アーティファクトタイプ "pom"の親mavenモジュールpom.xmlを作成できます。傘モジュールを「親」として使用して、最初のサブモジュール(外部依存関係のみを持つサブモジュール)用の子モジュールを作成します。親のバージョンを指定する必要があることに注意してください。子モジュールを親の "モジュール"として追加することを忘れないでください。このようなマルチモジュールプロジェクトを作成するときは、必ず子モジュールの$ {project.version}をバージョンとして使用してください。親の下にあるすべてのモジュールは、一度の操作で同時にリリースする必要があります。この設定を使用すると、バージョンフィールドがすべてのモジュールで同じになり、リリース中にどこでも更新されます。これにより、既存のナンバリングスキームを再利用することが困難になることがありますが、それは問題ではありません。とにかくバージョン番号を使い果たすことは決してありません。

  6. 親モジュールからコマンド "mvn clean install"を使用して、親モジュールと子モジュールを一緒にビルドできることを確認してください。

  7. 他のモジュールと同様に処理します。同じ親プロジェクトの下の他のモジュールへの依存関係も、$ {project。バージョン}を「バージョン」といいます。これは「これと同じバージョン」を意味します。ビルドするには、依存しているモジュールを "mvn install"を使ってビルドしなければならないので、ローカル(コンピュータ)リポジトリにデプロイされるようにしなければなりません。そうしないと、依存するモジュールはクラスを見つけることができなくなります。ビルドされたパッケージ化されたバージョンへの依存性だけが、ローカルリポジトリとリモートリポジトリにインストールされたモジュール間のソースコード依存性はありません。これは、あなたがアリプロジェクトから来た場合、非常に混乱する可能性があります。あなたがこれに慣れるまで、ルートモジュールからビルドしてください。それは2日かかります。

  8. IDEでmaven統合を使用しないでください。それは悪い考えです。 "mvn idea:idea"または "mvn eclipse:eclipse"を使用して、作業領域を非Mavenの通常のIDEプロジェクトとして設定します。 MavenとIDEのモジュール間依存関係のメカニズムは同一ではなく、決して同じではありません。また、プロジェクト間に依存関係がある複数のプロジェクトがある場合は、依存関係を設定した状態でワークスペースに複数のプロジェクトを作成することもできます。これは、mvnのアイデアで行うことができます:idea/eclipse:eclipse "workspace.xml"(または何でも)という別のmavenプロジェクトファイルを親モジュールと同じディレクトリに作成し、モジュールを含むマルチモジュールプロジェクトとして設定すると、 "と "../otherproject"(ここで一方向の参照のみ、親のref backはありません)。 "mvn idea:idea/eclipse:eclipse -f workspace.xml"を実行すると、これらすべてのモジュールがリンクされたワークスペースが作成されます。 IDEとの統合はできません。これは余分な作業が多いようですが、workspace.xmlファイルは実際には小さいです。それはすべての依存関係を含む必要はなく、IDEで一緒にバインドしたいモジュールへの参照だけです。

+0

一切のsvn NetBeansはありませんに従ってファイルを再配置(NBは今Mavenプロジェクトとしてそれを識別する必要があります)NBにバックアッププロジェクトを開きます。しかし、NetBeans MavenプラグインはPOMを理解し、依存関係管理をうまく処理します: http://wiki.netbeans。org/MavenBestPractices – mjn

+0

ポイント2では、デプロイメントを構築し、最後を置き換えるantスクリプトの部分を保持すると便利です。 ポイント8では、Eclipseとアイデアの両方が、プロジェクトを作成するときにmavenよりも、 YMMV – sal

+0

ポイント#7が正しくないようです。マルチモジュールプロジェクトでは、ローカル/リモートリポジトリにインストールすることなく、他のモジュールへの依存関係を設定することができます。 – Vicky

0

AntビルドをMavenに移行するためのスクリプトを作成しました。

https://github.com/ewhauser/ant2maven

は、それはあなたのディレクトリ構造を固定し、または任意の追加のAntタスクであなたを助けにはなりませんが、それは面倒な手順の多くは始めるために削除されます:あなたは、ここでより多くの情報を見つけることができます。

+0

スクリプトへのリンクを修正しました。 –

0

私はここジョセフあざける者によってinstruccionsを使用してMavenプロジェクトへのNetBeansのAntプロジェクトのsucceful移行をした:http://forums.netbeans.org/ptopic55953.html を、私は重要な部分引用:

  1. プロジェクトを閉じたbuild.xmlの名前を変更し、 NBがそれらを認識しないように、nbprojectファイル/フォルダを何かに展開します。
  2. NBを閉じて再起動します(プロジェクトのメモリキャッシュに関する知識はなくなりました)
  3. 他のプロジェクトの空のPOMにコピーしてください。 NetBeansの:
  4. は、Mavenの道(™)
関連する問題