6

私は小さなチーム(3人)でいくつかのモジュール(現在約10人)で働いています。ビルドバージョンのコンパイル、統合、および管理は、ますます面倒になっています。Antを置き換える/完成させるための優れたビルド/統合ツールを探しています。

現在の開発環境の説明は次のとおりです。-サードパーティのJARに応じていくつかのモジュール-JARSをエクスポートするモジュール、WARSをエクスポートするモジュール、スタンドアロンの実行可能なJARSをエクスポートするモジュール(Fat-Jarを使用)-それらすべてのJavadoc -Eclipseを使用します-各モジュールのカスタムAntスクリプト。eclipse構成とAntスクリプトの間の多くの冗長な情報。たとえば、スタンドアロンのFat-JARの場合、すべての再帰的な依存関係をリストしましたが、理想的には、Eclipse構成から明確にインポートできます。-ソースコードはSVNを使用してバージョン管理されています

これが私が私のために完璧な統合ツールにしたいと思っていることです:

  • モジュールのリリースとバージョン管理を自動化します。理想的には、統合ツールは新しいバージョンが必要かどうかを検出する必要があります。たとえば、プロジェクトBに依存するプロジェクトAをリリースしたい場合、プロジェクトBにローカルで小さな変更を加えた場合、統合ツールは最初に新しいバージョンのBもリリースし、それに基づいてAを作成する必要があります。それ。

  • Eclipseと強力に統合して、モジュールとサードパーティのライブラリ間の依存関係を構成から取得できるようにします。ところで、他の「.xml」のものを更新せずに、Eclipseを使用してビルドパスを構成し続けたいと思います。Gradleはその構成からEclipseプロジェクトファイルを生成できることを確認しましたが、対応するものは素晴らしいでしょう。

  • ローカルプロジェクトで「ライブ」で透過的な開発を可能にします。つまり、メイン/「リーフ」プロジェクトの開発中に、コア/共通プロジェクトに小さな変更を加えることがよくあります。コアプロジェクトのJARを(ローカルでも)公開しなくても、コアプロジェクトの変更をリーフプロジェクトですぐに利用できるようにしたいと思います。

  • モジュールのリリースのすべてのバージョンを外部サーバーに保存します。最も単純な(共有フォルダー/ Webdav)が最適です。モジュールと配信されたアーティファクトのリストが掲載された素敵なWebページも素晴らしいでしょう。

私は多くのことを探し回ってきました。Ant4eclipse(Eclipse構成をAntスクリプトに統合するため)から、Maven / Ivy/Gradleツールまで。

私は少し混乱しています。これまでに私が理解したことは次のとおりです。-Mavenは優れた/大きなツールですが、やや堅固であり、その構造と概念に屈する必要があります。スクリプトではなく説明に基づいています。道を外れた場合は、独自のプラグインを開発する必要があります。--IvyはMavenよりも強力ではなく、処理するものは少なくなりますが、柔軟性が高くなります。--Gradleはその中間です。汎用です。これにより、スクリプトと「従来型」の構成が可能になります。Antを統合して拡張します。

したがって、この時点で、実際のユーザーからの実際の紹介文を探しています。どのツールを使用していますか?どのように ?私と同じニーズがありますか?それはあなたの人生を楽にしますか、それとも邪魔になりますか?

これらのツールの機能を確認するための開始点として使用できるいくつかのユースケースまたはワークスペーススケルトンのサンプルはありますか?

このメッセージの長さについて申し訳ありません。そして、事前にアドバイスをありがとうございます。

敬具、

ラファエル

4

6 に答える 6

2

モジュールのリリースとバージョン管理を自動化します(...)

バージョン管理とリポジトリの概念はMavenに組み込まれており、ここに収まる可能性があります。

MavenはSNAPSHOTの依存関係をサポートしています。スナップショットを使用する場合、ビルドの実行時に、Mavenはリポジトリから利用可能な最新のスナップショットを定期的にダウンロードしようとします。SNAPSHOTは通常、プロジェクトが活発に開発されているときに使用されます。

Maven 2はバージョン範囲もサポートしています(私は実際にはお勧めしませんが、それは別の話です)。これにより、たとえば、Aを[4.0,)Bのバージョン(4.0以上の任意のバージョン)に依存するように構成できます。新しいバージョンのBをビルドしてリリースする場合、Aはそれを使用します。

日食と強く統合する

m2eclipseプラグインは、Eclipseとの双方向同期を提供します。

ローカルプロジェクトで「ライブ」で透過的な開発を可能にします。

m2eclipseプラグインは「ワークスペース解決」をサポートします。プロジェクトAがプロジェクトBに依存し、プロジェクトBがワークスペースにある場合、B.jarではなくBソースに依存するようにAを構成できます(これがデフォルトのモードです。間違い)。したがって、B.jarをビルドしなくても、Bソースの変更を直接表示できます。

モジュールのリリースのすべてのバージョンを外部サーバーに保存します。

前述のように、これは実際にはMavenの中心的な概念であり(選択することもできません)、file://またはdav://を介したデプロイは両方ともサポートされています。


要約すると、Mavenは(おそらく)唯一の候補ではありませんが、それが適合すると確信しています:

  • あなたのプロジェクトはそれほどエキゾチックでも複雑でもありません、あなたの説明から怖いものは何もありません(構造のリファクタリングがおそらく必要になるでしょうが、これは大したことではないはずです)。
  • Mavenは、ベストプラクティスに基づいたワークフローも提供します。
  • m2eclipseは、IDEとの強力な統合を提供します。

しかし、Mavenにはある程度の学習曲線があります。

于 2010-07-06T13:59:16.400 に答える
2

Gradleをビルドプロセスに統合し始めており、すでに投稿されている回答にGradleも機能することを追加できます。あなたの仮定はほとんど正しいです、gradleはカフから離れていますが、強力であり、ビルド自体の中でスクリプトなどを可能にします。Mavenができることのほとんどは、gradleもできるようです。

今あなたの個々のポイントのために:

バージョニング:gradleは依存関係マップ、バージョン管理をサポートしており、CIサーバーを追加すると、自動化された/依存関係のあるビルドをトリガーできます。たとえば、ほとんどすべての「成果物」は.warsですが、開発中のコードライブラリ(.jars)と実行可能ファイル.jarがいくつかあります。1つの構成は、warsと「fat-jar」を共有コードライブラリに依存させることです。次に、共有ライブラリが更新されたら、共有ライブラリのバージョンをバンプし、消費プロジェクトをテストしてから、Hudsonの機能を使用して依存プロジェクトを起動し、それらを再デプロイします。他の方法もありますが、今のところ、それが私たちにとって最もうまくいくようです。

eclipseと強力に統合する:その通り、gradleはeclipseファイルを生成できます。クラスパスのみを変更する必要があるため、開始後にeclipseCp(.classpathを更新するため)タスクのみを使用する傾向があります。これはちょっと風変わりですが(デフォルトのJREを取得するので、正しいことを確認してください。必要に応じてexported = "true"を追加しないでください)、99%の方法でそこに到達します。

ローカルプロジェクトで「ライブ」で透過的な開発を可能にする:これは私にはよくわかりません。この場合、私はgradleをハックしただけです。消費プロジェクトのアーティファクトを削除し、Eclipseで共有プロジェクトにそのようにマークを付け、その後元に戻しました。

モジュールのリリースのすべてのバージョンを外部サーバーに保存します。Mavenと同様に、シンプルで多くのアプローチがサポートされています。

例としては、gradleのドキュメントと、フルzipに付属しているサンプルプロジェクトが適しています。彼らはあなたをかなり早く立ち上げて実行させるでしょう。

于 2010-07-06T16:59:31.267 に答える
2

CIツール?私にとって、HudsonCIは1つだけです。


コンポーネントを使用して、Javaのソフトウェア開発環境を一度セットアップしました。

  • Eclipse IDE
  • Mercurial
  • Bugzilla
  • Maven
  • ネクサス
  • ハドソンCI

そして、いくつかのapache、mysql、php、perl、python、..統合用。

ハドソンは日食と統合されていませんでした。別のサーバーでビルドしたかったので、それは意図的なものでした。他のすべてのツールについては、完全な相互統合がありました(たとえば、Bugzillaと通信するためのEclipse上のmylyn、Maven eclipseを使用するためのm2eclipse、hudson用の多くのプラグインなど)

于 2010-07-06T13:17:37.267 に答える
1

特効薬はありませんが、私の経験では、Mavenは優れたプロジェクト管理ツールです。個人的には、Subversion(バージョン管理用)、Maven(プロジェクト/ビルド管理用)、Hudson(継続的ビルド/統合用)の組み合わせを使用するのが好きです。

Mavenによってもたらされた規則は、コンテキストの切り替えに非常に役立ち、依存関係の管理に最適だと思います。jarがリポジトリにない場合はイライラする可能性がありますが、ローカルにインストールでき、準備ができたら、他の場所をミラーリングする独自のプライベートリポジトリをホストできます。私はhttp://www.sonatype.com/でsonar.nexusを使用して良い経験をしました。彼らはまたあなたが始めるための優れた無料の本を提供します。

今はやり過ぎのように思えるかもしれませんが、今すぐ優れたビルド/テスト/統合/リリース環境をセットアップすることで、後で利益を得ることができます。後付けするのは常に難しく、簡単に複製できるものです。

最後に、私はたまたまMavenにNetbeans統合を好みますが、それは私だけです:)

于 2010-07-06T14:58:49.380 に答える
1

AntIvyをご覧ください。http://ant.apache.org/ivy/

于 2010-07-06T13:49:06.007 に答える
0

トピックの一部は、展開およびリリース管理の一部です。

次のような製品をチェックアウトできます:Xebia DeployIt
(無料の個人版付き)

于 2010-07-06T13:44:14.813 に答える