gradle.propertiesとsettings.gradleをいつ使用するのですか?


90

Gradleビルドには3つのファイルがあります

  • build.gradle ビルド構成スクリプトを定義します
  • gradle.properties
  • settings.gradle

質問

  • settings.gradle&の違いは何gradle.propertiesですか?
  • 設定はに置かれるべき場合にはsettings.gradlegradle.properties

回答:


85

settings.gradle

このsettings.gradleファイルは、ファイルと同じようにGroovyスクリプトbuild.gradleです。settings.gradle各ビルドで実行されるスクリプトは1つだけです(build.gradleマルチプロジェクトビルドの複数のスクリプトと比較して)。settings.gradleこのスクリプトは、任意の前に実行されるbuild.gradleスクリプトと前であっても、Projectインスタンスが作成されます。したがって、Settingsオブジェクトに対して評価されます。このSettingsオブジェクトを使用すると、ビルドにサブプロジェクトを追加したり、コマンドライン(StartParameter)からパラメーターを変更したり、Gradleオブジェクトにアクセスしてライフサイクルハンドラーを登録したりできます。結果として、settings.gradle設定がビルド関連であり、必ずしもプロジェクト関連である必要がない場合、または可能なサブプロジェクトが含まれる前にロジックが必要な場合に使用します。

gradle.properties

このgradle.propertiesファイルは単純なJavaPropertiesファイルであり、Projectオブジェクトのスコープに自動的に含まれることによってのみ特別な役割を果たします(いわゆる「プロジェクトプロパティ」として)。これは、文字列値のみを許可する単純なKey-Valueストアです(したがって、リストまたは配列を自分で分割する必要があります)。gradle.properties次の場所にファイルを配置できます。

  • プロジェクトディレクトリに直接(プロジェクト関連の値の場合)
  • ユーザーのホーム.gradleディレクトリ(ユーザーまたは環境に関連する値の場合)

62

マルチモジュールプロジェクトには、1つのメインモジュールと多くのサブモジュールがあります。このレイアウトがあります:

(root)
  +- settings.gradle       
  +- build.gradle          # optional (commonly present)
  +- gradle.properties     # optional
  +-- buildSrc/            # optional
  |     +- build.gradle    
  |     +-- src/...
  +-- my-gradle-stuff/     # optional
  |     +- utils.gradle    # optional
  +-- sub-a/
  |     +- build.gradle
  |     +- src/
  +-- sub-b/
        +- build.gradle
        +- src/

サブモジュールはサブフォルダーのより深い場所に配置することもできますが、settings.gradleのコードを変更しないと、その名前にはそのようなフォルダーの名前が含まれます。

settings.gradle

settings.gradleの主な役割は、含まれているすべてのサブモジュールを定義し、モジュールツリーのディレクトリルートをマークすることです。これsettings.gradleにより、マルチモジュールプロジェクトに含めることができるファイルは1つだけになります。

rootProject.name = 'project-x'

include 'sub-a', 'sub-b'

設定ファイルもgroovyで記述されており、サブモジュールのルックアップをカスタマイズできます。

build.gradle

モジュールごとにそのようなファイルが1つあり、このモジュールのビルドロジックが含まれています。

build.gradleファイルメインモジュールは、使用することができますallprojects {}またはsubprojects {}他のすべてのモジュールの設定を定義します。

build.gradleサブモジュールのファイルで、compile project(':sub-a')1つのサブモジュールを他のサブモジュールに依存させるために使用できます。

gradle.properties

これはオプションです。その主な目的は、gradle自体を実行するために使用する起動オプションを提供することです。

org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true

これらの値は、ファイルUSER_HOME/.gradle/gradle.propertiesでオーバーライドしたり、gradleコマンドライン引数でオーバーライドしたりできます。またsystemProp.、プレフィックスとして使用して、このファイルでビルドの環境変数を設定することもできます。

このファイルの任意のプロパティは任意のbuild.gradleで使用できるため、一部のプロジェクトでは依存関係のバージョンまたはリリース情報もに配置されますが、これgradle.propertiesはこのファイルの悪用である可能性があります。

my-gradle-stuff / utils.gradle

(フォルダーまたはファイルの任意の名前が可能です。)定義を再利用するために追加のカスタムgradleファイルを定義し、それらを他のgradleファイルに含めることができます。

apply from: "$rootDir/gradle/utils.gradle"

これを置く他の場所はsrc/gradleまたはかもしれませんsrc/build/gradle

buildSrc /..。

このフォルダーは特別で、それ自体が別のgradleプロジェクトのようなものです。それは他のことをする前に構築され、他のgradleファイルで使用する機能を提供できます。技術的な理由により、このフォルダーへの参照に対するIDEのサポートは、複数のbuild.gradleファイルから別の場所に共通のコードを抽出する他の方法よりもはるかにうまく機能します。

プラグインを作成してデプロイする代わりに、Java、Groovy、またはkotlinで複雑なカスタムビルドロジックを定義できます。これは、単体テストを実行できるため、カスタムビルドコードの単体テストにも役立ちます。のソースフォルダ構造はbuildSrc、他のjava / groovy / kotlinプロジェクトと同じように適合させることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.