1

マルチモジュール プロジェクトで初めて Gradle を使用していますが、そのような取り組みのために依存関係管理を行うための正しい/最善の方法について何らかのコンセンサスがあるかどうか疑問に思っていました。私が知る限り、2 つのアプローチがあり、最初のアプローチの方が広く受け入れられているようです。それは次のようになります: ]

-- MyProject
---- settings.gradle
---- build.gradle
---- coreProject
---- servicesProject
------ servicesSubProject
---- warProject
---- common

このアプローチに従って、すべての管理は単一の build.gradle ファイルで行われ (他の外部 .gradle ファイルを使用してさまざまなアーティファクトを定義できます)、個々のプロジェクトの依存関係は、次のようなそれぞれの「プロジェクト」定義セクションで管理されます。

project('servicesProject:servicesSubProject') {
    dependencies {
        compile project(':common')
        compile spring.data
        compile spring.framework.persistence
        compile spring.framework.security
        compile persistence.hibernate.core
        compile persistence.postgresql
    }
}

別の方法は、次のようにサブプロジェクトごとに build.gradle ファイルを作成することです (ここでは、サブプロジェクトの依存関係はそのプロジェクトの build.gradle ファイルの依存関係セクションにあります)。

-- MyProject
---- settings.gradle
---- build.gradle
---- coreProject
------ build.gradle
---- servicesProject
------ build.gradle
------ servicesSubProject
-------- build.gradle
---- warProject
------ build.gradle
---- common
------ build.gradle

私が言ったように、私が読むことができたものから、最初のアプローチは2番目のアプローチよりも広く使用されているようです. Spring Framework gradle ファイルはこのようにセットアップされます。ただし、それを全力で進める前に、トレードオフやその他の注意すべき影響があるかどうかを確認する必要があると考えました。ご意見ありがとうございます。

4

2 に答える 2

3

サブプロジェクトごとに個別のビルド スクリプトを用意する方が、おそらくより一般的です。1 つの大きなスクリプトを複数の小さなスクリプトに分割するのは自然な方法であり、一般的には良いことです。とはいえ、単一のビルド スクリプトを好むチームもあり、Gradle はそれに対応するのに十分な柔軟性を備えています。

複数のビルド スクリプトを使用する場合は、それらが属するサブプロジェクトにちなんで名前を付けると効果的です。これは、次のコードを に追加することで実現できますsettings.gradle(コードは、サブプロジェクトのレベルが 1 つだけであることを前提としています)。

rootProject.children.each { it.buildFileName = it.name + ".gradle" }

PS: 依存関係の宣言がサブプロジェクトのビルド スクリプトの大部分を占めることがよくありますが、1 つまたは複数のビルド スクリプトを使用するかどうかの決定は、依存関係の管理に固有のものではありません。

于 2012-08-06T13:04:14.390 に答える