質問

私はいくつかのモジュール(現在約10人)で小さなチーム(3人)で働いています。ビルドバージョンの編集、統合、管理はますます退屈になっています。 ANTを交換 /完了するための優れたビルド /統合ツールを探しています。

現在の開発環境の説明は次のとおりです。-それぞれのオーバーおよびサードパーティの瓶に応じていくつかのモジュール - 一部は瓶、いくつかの輸出戦争、いくつかの輸出スタンドアロン、実行可能な瓶(ファットジャール付き) - それらのすべてのJavadoc -Eclipse-各モジュールのカスタムAntスクリプトを使用します。 Eclipse構成とANTスクリプトの間の多くの冗長な情報。たとえば、スタンドアロンの脂肪jarの場合、すべての再帰的依存関係をリストしましたが、理想的にはEclipse構成から明らかにインポートできます。 - ソースコードは、SVNを使用してバージョンされています

これが私のために完璧な統合ツールを望んでいることです:

  • モジュールのリリースとバージョン化を自動化します。理想的には、統合ツールが新しいバージョンが必要かどうかを検出する必要があります。たとえば、プロジェクトBに依存するプロジェクトAをリリースしたい場合、およびプロジェクトBをローカルに変更した場合、統合ツールはまずBの新しいバージョンをリリースし、Aを作成する必要があります。それ。

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

  • 地元のプロジェクトで「ライブ」と透明な開発を可能にします。私は、メイン /「リーフ」プロジェクトを開発しながら、コア /コモンプロジェクトに小さな変更を加えることがよくあります。私のコアプロジェクトの瓶を(現地でさえ)公開する必要なく、コアプロジェクトの私の変更をすぐにリーフプロジェクトに利用できるようにしたいと思います。

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

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

私は少し混乱しています。これまでに私が理解してきたことは次のとおりです。 -Mavenは素晴らしい /大きなツールですが、やや硬直しており、その構造と概念に曲がることを義務付けています。スクリプトではなく説明に基づいています。パスから出た場合、自分のプラグインを開発する必要があります。 - アイビーはMavenよりも強力ではなく、より少ないものを処理しますが、より柔軟です。 -Gradleはその間です。それは汎用です。スクリプトと「コンベンションベースの」構成を可能にします。アリを統合し、拡張します。

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

いくつかのユースケース、またはこれらのツールが何ができるかを見るために出発点として使用できるワークスペーススケルトンはありますか?

このメッセージの長さは申し訳ありません。そして、アドバイスを前もってありがとう。

敬具、

ラファエル

役に立ちましたか?

解決

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

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

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

Maven 2もサポートしています バージョンの範囲 (私はそれらを本当にお勧めしませんが、それは別のストーリーです)たとえば、aを構成することを可能にしますバージョンに依存することができます [4.0,) B(4.0以上のバージョン)。 Bの新しいバージョンを構築してリリースすると、Aはそれを使用します。

Eclipseと強く統合します

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

地元のプロジェクトで「ライブ」と透明な開発を可能にします。

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

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

前述のように、これは実際にはMavenの中心的な概念であり(選択肢さえありません)、file://またはdav://を介して展開しています。


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

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

しかし、Mavenにはいくつかの学習曲線があります。

他のヒント

CIツール?私には、1つしかありません: ハドソンCI.


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

  • ECLIPSE IDE
  • 水銀
  • bugzilla
  • メイベン
  • ネクサス
  • ハドソンCI

そして、いくつかのApache、mysql、php、perl、python、統合のため。

ハドソンはEclipseと統合されておらず、それは目的にありました。なぜなら、私は別のサーバー上に構築したいと思っていたからです。他のすべてのツールについて、私は完璧なクロス統合を持っていました(EclipseのMylynがBugzilla、M2eclipseと話をするためにMaven Eclipseを使用するために、ハドソンの多くのプラグインなど)がありました...)

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

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

バージョン化: :Gradleは依存関係マップ、バージョン化をサポートし、CIサーバーを追加すると、自動化/依存のビルドをトリガーできます。たとえば、「成果物」のほとんどすべてが.warですが、いくつかのコードLIB(.jar)と1つの実行可能ファイル.JARが開発されています。 1つの構成は、共有コードLIBSに依存する戦争と「ファットジャール」を作成することです。次に、共有Libsが更新されたら、共有Libsのバージョンをぶつけ、消費プロジェクトをテストし、Hudsonの依存プロジェクトを発射してそれらを再配置する能力を使用します。他の方法はありますが、それは今のところ私たちにとって最もうまくいくようです。

Eclipseと強く統合します: :そうです、GradleはEclipseファイルを生成できます。 ClassPathのみが変更されるため、EclipsECP(ClassPathを更新する)タスクのみを使用する傾向があります。それは一種の風変わりです(デフォルトのJREをつかむので、それが正しいことを確認してください、必要な場合はエクスポート= "true"を追加しません)が、そこにある方法の99%を取得します。

地元のプロジェクトで「ライブ」と透明な開発を可能にする: :これは私がよくわからないものです。この場合、Gradleの周りにハッキングしただけです。消費プロジェクトのアーティファクトを削除し、Eclipseで共有プロジェクトをマークすることにより、その後戻ってきました。

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

例に関しては、Gradleのドキュメントは優れているだけでなく、完全なZIPに伴うプロジェクトの例もあります。彼らはあなたをかなり迅速に稼働させます。

アリのツビーを見てください。 http://ant.apache.org/ivy/

銀の弾丸はありませんが、私の経験では、Mavenは素晴らしいプロジェクト管理ツールです。個人的には、私は転覆(バージョン制御用)、Maven(プロジェクト/ビルド管理用)、ハドソン(継続的なビルド/統合のため)のコミブネーションを使用するのが好きです。

Mavenによって提起されたコンベンションは、コンテキストの切り替えに本当に役立ち、依存関係管理に最適です。瓶がリポジトリにない場合はイライラする可能性がありますが、ローカルにインストールでき、準備ができたら他の場所を反映する独自のプライベートリポジトリをホストできます。 Sonar.nexus byを使用して良い経験をしました http://www.sonatype.com/ 。彼らはまた、あなたを始めるために優秀な無料の本を提供します。

今はやり過ぎのように思えるかもしれませんが、今では優れたビルド /テスト /統合 /リリース環境を設定すると、後で配当を支払います。レトロフィットは常に難しく、簡単に複製できるものです。

最後に、私はたまたまMavenよりもNetBeansの統合を好みますが、それは私だけです:)

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

次のような製品をチェックアウトできます。 Xebia Deployit
(と パーソナルエディション 無料です)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top