JavaプロジェクトをAntからGradleに移行しています。私は最高のソリューションは、Gradleのマルチプロジェクトサポートを使用することだと思うが、私は循環依存を取り除く方法を見つけることができません。Gradleの循環依存性を解決する方法
元のプロジェクトは、このレイアウトを持つように設定した:
- project/
- common/
- product-a/
- product-b/
common
、product-a
、とproduct-b
の関係はトリッキーです。 common
は、構成ファイルに応じて、product-a
またはproduct-b
に依存します。同様に、product-a
およびproduct-b
は、構成プロパティに関係なく、common
に依存します。 product-a
とproduct-b
は同時に構築されることはありません。
私は、迅速な解決がproject/build.gradle
中でこのようなものを使用するのだろうと思った:
project(':product-a') {
dependencies {
compile project(':common')
}
}
project(':product-b') {
dependencies {
compile project(':common')
}
}
次に、私はちょうどproduct-a
のために働いてまで、これが近づくための方法を得ることについて考えました。それは私にこれをもたらしました:
project(':common') {
dependencies {
compile project(':product-a')
}
}
これは、循環依存性を持つための例外をスローします。
私はcommon
とproduct-a
/product-b
によって、または多型を使用することにより期待されるクラスのインタフェースを設定することによりproduct-a
とproduct-b
をリファクタリングと考えられてきましたが、私はそれらのいずれかで前方に移動する前に、とこれを達成するためのより良い方法がありますGradle?私はまだこの技術的な負債を取り除く準備ができていません。