2011-06-30 6 views
3

私は、antからmavenにプロジェクトを移植しています。このプロジェクトは、jarを取得し、他の3つのサブプロジェクトで使用されるコアクラスのクラスで構成されています。重要なのは(私は思う?)、コアjarにはビルド時に設定される独自の設定があり、各サブプロジェクトにはビルド時に設定された設定もあります。旧アリのシステムでは、いつでも私はそれが同じ(ステージ)の設定を使用してコアjarを構築し、クラスのディレクトリにコピーします...何か等とサブプロジェクトの1 ...Maven:プロジェクトの継承または集約がこのシナリオをよりよくサポートしていますか?

ant -Dconfiguration=stage clean dist 

を構築しましたサブプロジェクトのビルドの私はmavenを使ってこの機能を複製したいと思います。私が行った読書から、Mavenはプロジェクトの継承または集約を使ってこれを処理できるようです。 2つの方法の主な違いは何ですか?また、私が説明したユースケースについてお勧めしますか?

答えて

3

継承は、サードパーティのライブラリの依存関係やプロパティ、SCMの場所など、プロジェクト間の共通事項を共有するために使用されます。集約はプロジェクトをグループとして構築するために使用されます。集約が必要ですが、一般的なものを除外するために継承を使用しないことを意味するわけではありません。

更新:mavenはビルドに関するものではなく、依存性管理に関するものなので、コアに依存関係を作成し、集約をまったく使用しないことができます。コアの特定のバージョンに依存します。しかし、これは一度にすべてを構築するというあなたの要求を満たしません。

+0

ええ、私はそれを考えましたが、コアがそれ自身の設定を持っていて、設定がサブプロジェクトと一致しなければならない、あるいは「悪いこと」が起こると、 –

+1

したがって、設定はおそらく親のpom(継承)に入っていますが、依然として依存関係を使用できます。 –

+0

私は詳しく述べるべきです。コアには環境固有の設定が含まれています(ステージでは、このDBへの書き込み、prodではこれに代わり書き込み)。サブプロジェクトも同様です。コアアーティファクトが、例えばproductionのために設定されていて、サブプロジェクトをstage configでビルドしていて、依存関係を使用していただけの場合は、無効な設定になります。 –