Gradleビルドには3つのファイルがあります
build.gradle
gradle.properties
settings.gradle
質問
settings.gradle
とgradle.properties
の違いは何ですか?settings.gradle
vs. gradle.properties
に設定を配置する必要があるのはいつですか?settings.gradle
settings.gradle
ファイルは、build.gradle
ファイルと同様に、Groovyスクリプトです。各ビルドで実行されるsettings.gradle
スクリプトは1つだけです(マルチプロジェクトビルドの複数のbuild.gradle
スクリプトと比較して)。 settings.gradle
スクリプトは、build.gradle
スクリプトの前、および Project
インスタンスが作成される前でも実行されます。したがって、 Settings
オブジェクトに対して評価されます。このSettings
オブジェクトを使用すると、サブプロジェクトをビルドに追加し、コマンドラインからパラメーターを変更し( StartParameter
)、ライフサイクルハンドラーを登録するために Gradle
オブジェクトにアクセスできます。結果として、設定がビルド関連であり、必ずしもプロジェクト関連である必要がない場合、またはロジックが必要な場合は、settings.gradle
を使用してくださいbefore可能なサブプロジェクトが含まれます。
gradle.properties
gradle.properties
ファイルは、単純なJava Properties
ファイルであり、Project
オブジェクトのスコープに自動的に含まれることによって特別な役割を獲得します(いわゆる「プロジェクトプロパティ」として)。これは、文字列値のみを許可する単純なキー値ストアです(したがって、リストまたは配列を自分で分割する必要があります)。次の場所にgradle.properties
ファイルを配置できます。
.gradle
ディレクトリ(ユーザーまたは環境関連の値用)マルチモジュールプロジェクトには、1つのメインモジュールと多くのサブモジュールがあります。このレイアウトは次のとおりです。
(root)
+- settings.gradle
+- build.gradle
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle # optional
| +-- src/ # optional
| +-- test/ # optional
+-- gradle/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
サブモジュールはサブフォルダーのより深い場所に配置することもできますが、settings.gradleのコードを変更しなければ、その名前にはそのようなフォルダーの名前が含まれます。
Settings.gradleの主な役割は、含まれるすべてのサブモジュールを定義し、モジュールのツリーのディレクトリルートをマークすることです。したがって、マルチモジュールプロジェクトで使用できるsettings.gradle
ファイルは1つだけです。
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
設定ファイルもgroovyで書かれており、サブモジュールのルックアップをカスタマイズできます。
モジュールごとにこのようなファイルが1つあり、このモジュールのビルドロジックが含まれています。
メインモジュールのbuild.gradle
ファイルでは、allprojects {}
またはsubprojects {}
を使用して、他のすべてのモジュールの設定を定義できます。
サブモジュールのbuild.gradle
ファイルでは、compile project(':sub-a')
を使用して、1つのサブモジュールを他のサブモジュールに依存させることができます。
これはオプションです。その主な目的は、gradle自体の実行に使用するスタートアップオプションを提供することです。
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
これらの値は、ファイルUSER_HOME/.gradle/gradle.properties
でオーバーライドでき、gradleコマンドライン引数でオーバーライドできます。また、systemProp.
をプレフィックスとして使用して、このファイルでビルドの環境変数を設定することもできます。
このファイルのプロパティはbuild.gradleで使用できるため、一部のプロジェクトは依存関係のバージョンまたはリリース情報もgradle.properties
に配置しますが、これはおそらくこのファイルの悪用です。
(任意の名前のフォルダーまたはファイルが可能です。)追加のカスタムgradleファイルを定義して定義を再利用し、次の方法で他のgradleファイルに含めることができます
apply from: "$rootDir/gradle/utils.gradle"
このフォルダーは特別で、それ自体が個別のgradleプロジェクトのようなものです。それは他の何かをする前に構築され、他のgradleファイルで使用する機能を提供できます。 技術的な理由により、このフォルダーへの参照のIDEサポートは、複数のbuild.gradle
ファイルから別の場所に共通コードを抽出する他の方法よりもはるかに機能します。複雑なカスタムを定義できますプラグインを記述してデプロイする代わりに、Java、groovy、またはkotlinでロジックを構築します。これは、ユニットテストを実行できるため、カスタムビルドコードのユニットテストにも役立ちます。