設定

API 文件設定

宣告實例化和配置 Project 階層結構所需的組態,這些實例將參與建置。

Settings 實例與 settings.gradle 設定檔之間存在一對一的關係。在 Gradle 組裝專案以進行建置之前,它會建立一個 Settings 實例,並針對該實例執行設定檔。

組裝多專案建置

Settings 物件的用途之一是讓您宣告要包含在建置中的專案。您可以使用 Settings.include(java.lang.String[]) 方法將專案新增至建置。建置中始終包含一個根專案。它在建立 Settings 物件時自動新增。根專案的名稱預設為包含設定檔的目錄名稱。根專案的專案目錄預設為包含設定檔的目錄。

當專案包含在建置中時,會建立一個 ProjectDescriptor。您可以使用此描述符來變更專案多個屬性的預設值。

在設定檔中使用設定

動態屬性

除了此介面的屬性之外,Settings 物件還向設定腳本提供了一些額外的唯讀屬性。這包括來自以下來源的屬性

  • 定義在建置設定目錄中的 gradle.properties 檔案中。
  • 定義在使用者 .gradle 目錄中的 gradle.properties 檔案中。
  • 使用 -P 選項在命令列上提供。

屬性

屬性描述
buildCache

建置快取組態。

caches
開發中

儲存在使用者主目錄中快取的組態。

extensions

擴展的容器。

gradle

當前建置的 Gradle 實例。

pluginManager

此外掛感知物件的外掛管理器。

plugins

已套用於此物件的外掛容器。

rootDir

建置的根目錄。根目錄是根專案的專案目錄。

rootProject

建置的根專案。

settings

傳回此設定物件。

settingsDir

建置的設定目錄。設定目錄是包含設定檔的目錄。

startParameter

用於調用此 Gradle 實例的參數集。

方法

方法描述
apply(closure)

套用零個或多個外掛或腳本。

apply(options)

使用以 map 形式提供的給定選項,套用外掛或腳本。如果外掛已套用,則不執行任何操作。

apply(action)

套用零個或多個外掛或腳本。

buildCache(action)

配置建置快取。

caches(cachesConfiguration)
開發中

配置儲存在使用者主目錄中快取的設定。

findProject(projectDir)

傳回具有給定專案目錄的專案。

findProject(path)

傳回具有給定路徑的專案。

include(projectPaths)

將給定的專案新增至建置。提供的清單中的每個路徑都被視為要新增至建置的專案的路徑。請注意,這些路徑不是檔案路徑,而是指定新專案在專案階層結構中的位置。因此,提供的路徑必須使用 ':' 字元作為分隔符(而不是 '/')。

include(projectPaths)

將給定的專案新增至建置。提供的清單中的每個路徑都被視為要新增至建置的專案的路徑。請注意,這些路徑不是檔案路徑,而是指定新專案在專案階層結構中的位置。因此,提供的路徑必須使用 ':' 字元作為分隔符(而不是 '/')。

includeBuild(rootProject)

將指定路徑的建置包含到複合建置中。

includeBuild(rootProject, configuration)

將指定路徑的建置包含到複合建置中,並使用提供的組態。

includeFlat(projectNames)

將給定的專案新增至建置。提供的清單中的每個名稱都被視為要新增至建置的專案的名稱。

includeFlat(projectNames)

將給定的專案新增至建置。提供的清單中的每個名稱都被視為要新增至建置的專案的名稱。

project(projectDir)

傳回具有給定專案目錄的專案。

project(path)

傳回具有給定路徑的專案。

腳本區塊

沒有腳本區塊

屬性詳情

BuildCacheConfiguration buildCache (唯讀)

建置快取組態。

CacheConfigurations caches (唯讀)

注意:此屬性正在開發中,並且可能在 Gradle 的未來版本中變更。

儲存在使用者主目錄中快取的組態。

ExtensionContainer extensions (唯讀)

擴展的容器。

Gradle gradle (唯讀)

當前建置的 Gradle 實例。

PluginManager pluginManager (唯讀)

此外掛感知物件的外掛管理器。

PluginContainer plugins (唯讀)

已套用於此物件的外掛容器。

雖然不建議使用,但最好使用此介面的方法或 PluginAware.getPluginManager(),而不是使用外掛容器。

使用此介面或 PluginAware.getPluginManager() 上的 'apply' 方法之一來套用外掛,而不是通過外掛容器套用。

使用 PluginManager.hasPlugin(java.lang.String) 或類似方法來查詢外掛的應用程式,而不是通過外掛容器執行此操作。

File rootDir (唯讀)

建置的根目錄。根目錄是根專案的專案目錄。

ProjectDescriptor rootProject (唯讀)

建置的根專案。

Settings settings (唯讀)

傳回此設定物件。

File settingsDir (唯讀)

建置的設定目錄。設定目錄是包含設定檔的目錄。

StartParameter startParameter (唯讀)

用於調用此 Gradle 實例的參數集。

方法詳情

void apply(Closure closure)

套用零個或多個外掛或腳本。

給定的 closure 用於配置 ObjectConfigurationAction,它「建置」外掛應用程式。

此方法與 PluginAware.apply(java.util.Map) 的不同之處在於,它允許多次調用配置動作的方法。

void apply(Map<String, ?> options)

使用以 map 形式提供的給定選項,套用外掛或腳本。如果外掛已套用,則不執行任何操作。

給定的 map 作為一系列方法調用應用於新建立的 ObjectConfigurationAction。也就是說,map 中的每個 key 都應為 ObjectConfigurationAction 的方法名稱,而 value 應為與該方法相容的引數。

以下選項可用

  • from:要套用的腳本。接受 Project.uri(java.lang.Object) 支援的任何路徑。
  • plugin:要套用的外掛的 ID 或實作類別。
  • to:目標委派物件或物件。預設值為此外掛感知物件。使用此選項可配置除此物件之外的物件。

void apply(Action<? super ObjectConfigurationAction> action)

套用零個或多個外掛或腳本。

給定的 closure 用於配置 ObjectConfigurationAction,它「建置」外掛應用程式。

此方法與 PluginAware.apply(java.util.Map) 的不同之處在於,它允許多次調用配置動作的方法。

void buildCache(Action<? super BuildCacheConfiguration> action)

配置建置快取。

void caches(Action<? super CacheConfigurations> cachesConfiguration)

注意:此方法正在開發中,並且可能在 Gradle 的未來版本中變更。

配置儲存在使用者主目錄中快取的設定。

ProjectDescriptor findProject(File projectDir)

傳回具有給定專案目錄的專案。

ProjectDescriptor findProject(String path)

傳回具有給定路徑的專案。

void include(Iterable<String> projectPaths)

將給定的專案新增至建置。提供的清單中的每個路徑都被視為要新增至建置的專案的路徑。請注意,這些路徑不是檔案路徑,而是指定新專案在專案階層結構中的位置。因此,提供的路徑必須使用 ':' 字元作為分隔符(而不是 '/')。

所提供路徑的最後一個元素用作專案名稱。提供的路徑會轉換為相對於根專案目錄的專案目錄。專案目錄可以在專案包含後通過變更 'projectDir' 屬性來更改(請參閱 ProjectDescriptor.setProjectDir(java.io.File)

例如,路徑 a:b 會新增一個路徑為 :a:b、名稱為 b 且專案目錄為 $rootDir/a/b 的專案。如果路徑為 :a、名稱為 a 且專案目錄為 $rootDir/a 的專案尚不存在,它也會新增該專案。

一些使用專案路徑的常見範例包括

  // include two projects, 'foo' and 'foo:bar'
  // directories are inferred by replacing ':' with '/'
  include(['foo:bar'])

  // include one project whose project dir does not match the logical project path
  include(['baz'])
  project(':baz').projectDir = file('foo/baz')

  // include many projects whose project dirs do not match the logical project paths
  file('subprojects').eachDir { dir ->
    include([dir.name])
    project(":${dir.name}").projectDir = dir
  }

void include(String... projectPaths)

將給定的專案新增至建置。提供的清單中的每個路徑都被視為要新增至建置的專案的路徑。請注意,這些路徑不是檔案路徑,而是指定新專案在專案階層結構中的位置。因此,提供的路徑必須使用 ':' 字元作為分隔符(而不是 '/')。

所提供路徑的最後一個元素用作專案名稱。提供的路徑會轉換為相對於根專案目錄的專案目錄。專案目錄可以在專案包含後通過變更 'projectDir' 屬性來更改(請參閱 ProjectDescriptor.setProjectDir(java.io.File)

例如,路徑 a:b 會新增一個路徑為 :a:b、名稱為 b 且專案目錄為 $rootDir/a/b 的專案。如果路徑為 :a、名稱為 a 且專案目錄為 $rootDir/a 的專案尚不存在,它也會新增該專案。

一些使用專案路徑的常見範例包括

  // include two projects, 'foo' and 'foo:bar'
  // directories are inferred by replacing ':' with '/'
  include 'foo:bar'

  // include one project whose project dir does not match the logical project path
  include 'baz'
  project(':baz').projectDir = file('foo/baz')

  // include many projects whose project dirs do not match the logical project paths
  file('subprojects').eachDir { dir ->
    include dir.name
    project(":${dir.name}").projectDir = dir
  }

void includeBuild(Object rootProject)

將指定路徑的建置包含到複合建置中。

void includeBuild(Object rootProject, Action<ConfigurableIncludedBuild> configuration)

將指定路徑的建置包含到複合建置中,並使用提供的組態。

void includeFlat(Iterable<String> projectNames)

將給定的專案新增至建置。提供的清單中的每個名稱都被視為要新增至建置的專案的名稱。

提供的名稱會轉換為相對於根專案目錄的目錄的專案目錄。

例如,名稱 a 會新增一個路徑為 :a、名稱為 a 且專案目錄為 $rootDir/../a 的專案。

void includeFlat(String... projectNames)

將給定的專案新增至建置。提供的清單中的每個名稱都被視為要新增至建置的專案的名稱。

提供的名稱會轉換為相對於根專案目錄的目錄的專案目錄。

例如,名稱 a 會新增一個路徑為 :a、名稱為 a 且專案目錄為 $rootDir/../a 的專案。

ProjectDescriptor project(File projectDir)

傳回具有給定專案目錄的專案。

傳回具有給定路徑的專案。