2

多数のモジュールで構成される多数の製品があり、その一部は一部の製品間で共有されています。それらは、いくつかのバージョン管理リポジトリに分散しています。

製品は、すべてのモジュールをチェックアウトし、正しい順序でビルドする責任を持つマスター Ant スクリプトによってビルドされます。モジュールには独自のリリース サイクルはありません。

さて、私は宣言的な依存関係管理に行きたいと思っていますが、すべてのソリューション (Maven、Ivy) は、バージョン管理下のソース コードではなく成果物に依存しているようです。アーティファクトに頼ると大変なことになるから、やめたほうがいい。Ivy のようなものが欲しいのですが、私の製品はモジュール foo、bar、および baz (ブランチ 2.0) に依存しており、1 つまたは複数のソース コード マネージャー (構成で指定) からソース コードをチェックアウトして、フラットなワークスペース。

ビルドにgradleを使用する予定なので、それに合うソリューションをいただければ幸いです...

4

2 に答える 2

2

Gradle には、依存関係管理のために ivy プロジェクトが組み込まれているため、同じ種類の問題に直面することになります。

依存関係管理は、大規模なモノリシック ビルドを小さなコンポーネント ビルドに分割し、それぞれの出力を共通のリポジトリに公開して他の依存モジュールで使用できるようにするメカニズムです。

つまり、まず大規模なビルドを分割するか、依存関係管理を使用してサード パーティのオープン ソース ライブラリを制御するかを意識的に決定する必要があります。

複数の SCM リポジトリがあるという事実を制御できないと仮定すると、一元化されたビルドを作成するために次のアプローチをお勧めできます (ANT + サブバージョンを使用していると仮定しています)。

1) 子モジュールを含むマスター プロジェクトを作成します。

2) 各子モジュールは、外部定義としてマスター プロジェクトに追加されます。これにより、マスターの 1 つのチェックアウトが有効になり、各子プロジェクトが自動的にチェックアウトされます。

3) build.xmlマスター プロジェクトには、さまざまな子プロジェクトのivy.xmlファイル内で宣言された依存関係に基づいて正しい順序で子プロジェクトをビルドするために、ivy buildlistタスクを使用するビルド ファイルが含まれています。

マルチプロジェクトビルドの例はこちら

于 2010-06-21T17:27:34.880 に答える
0

Refix はあなたが求めているものだと思います: http://refix.codeplex.com/

于 2010-06-25T16:20:03.727 に答える