私はMavenを数か月使用しており、概念的にも実際にも Maven がどのように機能するかについてはかなり満足しています。
また、 Buckminsterをかなり広範囲に調べました(ただし、まだサンプルを実行することはできていません)。ドキュメントが貧弱です。たとえば、Build Automate や Deploy などの用語を使用していますが、デプロイについてはまだ何も見ていません。段階的な移行は、ほのめかされているが議論されていない別のトピックです。
Maven と Buckminster の両方で、依存関係を指定し、一般的にビルド、テスト、および場合によってはデプロイのプロセスを管理できます。
どちらも Eclipse と統合されており、(Maven のみを使用していたので) Eclipse ベースのプロジェクトとその依存関係のセットアップと共有を単純化する必要があります。
私が見ることができる主な違いは次のとおりです。
依存関係:
- Buckminster は、依存関係の Maven リポジトリを参照できることに加えて、ソース リポジトリと独自のタイプのリポジトリに存在する依存関係を指定できます。
- Buckminster は、依存関係を仮想ディストリビューションにグループ化でき、プラットフォームにも対応しています。ソフトウェアのグループ化は、他の依存関係を参照してそれらをグループ化する pom を使用して、Maven で確かに可能であるように思われます。
建てる
- Maven は、レイアウトに基づく暗黙的なビルド システムを使用します。デフォルトのプロジェクトを作成し、期待される場所に配置し、maven でビルド、テスト、および jar を作成するのは非常に簡単です。同時に、暗黙的であることは制約にもなり得ます。Maven のやり方に慣れる必要があります。
- Buckminster - Buckminster が何をどのように構築するかをどのように決定したかは、私には明らかではありません。これは、同じことを行うための eclipse プロセスと一致するように思われます。Buckminster も ant の使用を許可していますが、これが要件であるかどうかは明らかではありません。少なくとも、ライフサイクルの良し悪しの定義が少なく (未?)、柔軟性が高くなります。
- どちらのツールもヘッドレス ビルドを可能にしますが、バックミンスターにはもう少し多くの荷物が必要になる場合があります。
プラグイン
- Maven には、コード生成からテスト用の組み込みサービスの実行まで、さまざまな種類の自動化のライフサイクルのすべてのフェーズに対応する非常に広範なプラグイン セットがあります。
- Buckminster には、同じプラグインの概念がないようです。読み手と俳優がいますが、同じ役割を果たしているようには見えません。Buckminster は、ant で利用可能なプラグインの広範なセットにアクセスできる必要があります。ant アクションを残りの Buckminster プロセスとシームレスに統合できるかどうかは明確ではありません (これは maven ant プラグインの問題でもあります)。
展開
- Maven には、ソフトウェアのディストリビューション (アセンブリ) を生成し、それらを移動する (ワゴン) ためのプラグインが多数あります。バックミンスターはこれらすべてを Ant から取得しますか?
複雑
- バックミンスターのさまざまなスキーマは、CPEC、RMAP、MSPEC などの間で非常に複雑になる可能性があります。
- Maven は、大規模なマルチモジュール プロジェクトでは複雑になる可能性がありますが、構成に関してはいくぶん単純です。Maven には、新しいプロジェクトを簡単に作成するためのアーキタイプもあります。
ドキュメンテーション
- 彼らは両方とも悪いです。;-)
- Buckminster はドキュメントに関して非常に浅いです。十分な例がありません。
- Maven プラグインは、ドキュメントが非常に貧弱である傾向があり、正しく実行するのが難しくなっています。
私の観点からすると、Buckminster でやりたいことのほとんどは、Maven で実行できます。バージョン管理からの「実体化」はプラスですが、組織内の開発者は、固定バージョンを提供するだけでなく、Maven スナップショットをリポジトリに公開して相互に共有できます。
Maven ライフサイクルの制約から、より多くの柔軟性と自由があるように見えます (クリーンアップのための事後テストのような別のフェーズを追加したいと思ったことはありませんか? コアでそれを行うのを待つ必要があります)。
私は何が欠けていますか?Buckminster には、複雑化する価値のある重要な機能がいくつかありますか?
上記の非常に不正確なステートメントはありますか?