專案 (Project)

此介面是您從建置檔案與 Gradle 互動的主要 API。從 Project,您可以程式化地存取 Gradle 的所有功能。

生命週期

Projectbuild.gradle 檔案之間存在一對一的關係。在建置初始化期間,Gradle 會為每個將參與建置的專案組裝一個 Project 物件,如下所示

  • 為建置建立 Settings 實例。
  • 針對 Settings 物件評估 settings.gradle 腳本(如果存在)以進行組態設定。
  • 使用已組態設定的 Settings 物件來建立 Project 實例的階層結構。
  • 最後,透過對專案執行其 build.gradle 檔案(如果存在)來評估每個 Project。專案以廣度優先順序評估,以便在評估其子專案之前先評估專案。可以透過呼叫 Project.evaluationDependsOnChildren() 或使用 Project.evaluationDependsOn(java.lang.String) 新增明確的評估依賴性來覆寫此順序。

任務

專案本質上是 Task 物件的集合。每個任務執行一些基本的工作,例如編譯類別、執行單元測試或壓縮 WAR 檔案。您可以使用 TaskContainer 上的 create() 方法之一,例如 TaskContainer.create(java.lang.String),將任務新增至專案。您可以使用 TaskContainer 上的查找方法之一,例如 TaskCollection.getByName(java.lang.String),來尋找現有任務。

依賴

專案通常有許多執行其工作所需的依賴。此外,專案通常會產生許多其他專案可以使用的產出。這些依賴會分組在組態中,並且可以從儲存庫中檢索和上傳。您可以使用 ConfigurationContainer (由 Project.getConfigurations() 方法傳回)來管理組態。DependencyHandler (由 Project.getDependencies() 方法傳回)來管理依賴。ArtifactHandler (由 Project.getArtifacts() 方法傳回)來管理產出。RepositoryHandler (由 Project.getRepositories() 方法傳回)來管理儲存庫。

多專案建置

專案會排列成專案的階層結構。專案具有名稱和完整路徑,可在階層結構中唯一識別它。

外掛程式

外掛程式可用於模組化和重複使用專案組態。可以使用 PluginAware.apply(java.util.Map) 方法或使用 PluginDependenciesSpec 外掛程式腳本區塊來套用外掛程式。

動態專案屬性

Gradle 針對 Project 實例執行專案的建置檔案,以組態設定專案。您的腳本使用的任何屬性或方法都會委派給相關聯的 Project 物件。這表示您可以直接在腳本中使用 Project 介面上的任何方法和屬性。

例如

defaultTasks('some-task')  // Delegates to Project.defaultTasks()
reportsDir = file('reports') // Delegates to Project.file() and the Java Plugin

您也可以使用 project 屬性存取 Project 實例。在某些情況下,這可以使腳本更清晰。例如,您可以使用 project.name 而不是 name 來存取專案的名稱。

專案具有 5 個屬性「範圍」,它會在其中搜尋屬性。您可以在建置檔案中依名稱存取這些屬性,或呼叫專案的 Project.property(java.lang.String) 方法。範圍包括

  • Project 物件本身。此範圍包括 Project 實作類別宣告的任何屬性 getter 和 setter。例如,Project.getRootProject() 可作為 rootProject 屬性存取。此範圍的屬性是可讀或可寫的,具體取決於是否存在對應的 getter 或 setter 方法。
  • 專案的額外屬性。每個專案都維護一個額外屬性映射,其中可以包含任何任意名稱 -> 值對。定義後,此範圍的屬性即可讀寫。請參閱 額外屬性 以取得更多詳細資訊。
  • 外掛程式新增至專案的擴充功能。每個擴充功能都以唯讀屬性形式提供,其名稱與擴充功能相同。
  • 外掛程式新增至專案的慣例屬性。外掛程式可以透過專案的 Convention 物件,將屬性和方法新增至專案。此範圍的屬性可能是可讀或可寫的,具體取決於慣例物件。
  • 專案的任務。可以使用任務的名稱作為屬性名稱來存取任務。此範圍的屬性是唯讀的。例如,名為 compile 的任務可作為 compile 屬性存取。
  • 額外屬性和慣例屬性是從專案的父專案繼承而來,遞迴向上直到根專案。此範圍的屬性是唯讀的。

讀取屬性時,專案會依順序搜尋上述範圍,並從第一個找到屬性的範圍傳回值。如果找不到,則會擲回例外狀況。請參閱 Project.property(java.lang.String) 以取得更多詳細資訊。

寫入屬性時,專案會依順序搜尋上述範圍,並在第一個找到屬性的範圍中設定屬性。如果找不到,則會擲回例外狀況。請參閱 Project.setProperty(java.lang.String, java.lang.Object) 以取得更多詳細資訊。

額外屬性

所有額外屬性都必須透過 "ext" 命名空間定義。一旦定義了額外屬性,它就可以直接在擁有物件(在以下情況中分別為專案、任務和子專案)上使用,並且可以讀取和更新。只有初始宣告需要透過命名空間完成。

project.ext.prop1 = "foo"
task doStuff {
    ext.prop2 = "bar"
}
subprojects { ext.${prop3} = false }

讀取額外屬性是透過 "ext" 或透過擁有物件完成的。

ext.isSnapshot = version.endsWith("-SNAPSHOT")
if (isSnapshot) {
    // do snapshot stuff
}

動態方法

專案具有 5 個方法「範圍」,它會在其中搜尋方法

  • Project 物件本身。
  • 建置檔案。專案會搜尋在建置檔案中宣告的相符方法。
  • 外掛程式新增至專案的擴充功能。每個擴充功能都以方法形式提供,該方法採用閉包或 Action 作為參數。
  • 外掛程式新增至專案的慣例方法。外掛程式可以透過專案的 Convention 物件,將屬性和方法新增至專案。
  • 專案的任務。會為每個任務新增一個方法,使用任務的名稱作為方法名稱,並採用單一閉包或 Action 參數。該方法使用提供的閉包呼叫相關聯任務的 Task.configure(groovy.lang.Closure) 方法。例如,如果專案有名為 compile 的任務,則會新增具有以下簽名的方法:void compile(Closure configureClosure)
  • 父專案的方法,遞迴向上直到根專案。
  • 專案的屬性,其值為閉包。閉包會被視為方法並使用提供的參數呼叫。屬性會如上所述定位。

屬性

屬性描述
allprojects

包含此專案及其子專案的集合。

ant

此專案的 AntBuilder。您可以在建置檔案中使用它來執行 ant 任務。請參閱以下範例。

artifacts

傳回用於將專案產生的產出指派給組態的處理常式。

buildDir
已棄用

此專案的建置目錄。建置目錄是所有產出生成到的目錄。建置目錄的預設值為 projectDir/build

buildFile

此專案的建置腳本。

buildscript

此專案的建置腳本處理常式。您可以使用此處理常式來查詢有關此專案建置腳本的詳細資訊,並管理用於編譯和執行專案建置腳本的類別路徑。

childProjects

此專案的直接子專案。

configurations

此專案的組態。

convention
已棄用

此專案的 Convention

defaultTasks

此專案的預設任務名稱。當啟動建置時未提供任務名稱時,會使用這些任務。

dependencies

此專案的依賴處理常式。傳回的依賴處理常式實例可用於新增新的依賴。若要存取已宣告的依賴,可以使用組態。

dependencyLocking

提供對組態設定依賴鎖定的存取

description

此專案的描述(如果有的話)。

extensions

允許將 DSL 擴充功能新增至專案。對外掛程式作者很有用。

gradle

此專案所屬的 Gradle 調用。

group

此專案的群組。Gradle 始終使用群組的 toString() 值。群組預設為以點作為分隔符號的路徑。

layout

提供對此專案各種重要目錄的存取。

logger

此專案的記錄器。您可以在建置檔案中使用它來寫入記錄訊息。

logging

LoggingManager,可用於接收記錄並控制此專案建置腳本的標準輸出/錯誤捕獲。預設情況下,System.out 會在 QUIET 記錄層級重新導向至 Gradle 記錄系統,而 System.err 會在 ERROR 記錄層級重新導向。

name

此專案的名稱。專案的名稱在專案階層結構中不一定是唯一的。您應該使用 Project.getPath() 方法來取得專案的唯一識別碼。如果根專案未命名且位於檔案系統根目錄上,它將具有隨機產生的名稱

normalization

提供對組態設定輸入正規化的存取。

parent

此專案的父專案(如果有的話)。

path

此專案的路徑。路徑是專案的完整名稱。

pluginManager

此外掛程式感知物件的外掛程式管理員。

plugins

已套用至此物件的外掛程式容器。

project

傳回此專案。此方法在建置檔案中很有用,可明確存取專案屬性和方法。例如,使用 project.name 可以比使用 name 更好地表達您的意圖。此方法也允許您從屬性可能隱藏的範圍(例如,從方法或閉包)存取專案屬性。

projectDir

包含專案建置檔案的目錄。

properties

此專案的屬性。請參閱 此處 以取得專案可用的屬性的詳細資訊。

repositories

傳回處理常式以建立儲存庫,這些儲存庫用於檢索依賴和上傳專案產生的產出。

resources

提供對資源特定實用方法的存取,例如建立各種資源的工廠方法。

rootDir

此專案的根目錄。根目錄是根專案的專案目錄。

rootProject

此專案所屬階層結構的根專案。在單一專案建置的情況下,此方法會傳回此專案。

state

此專案的評估狀態。您可以使用它來存取有關此專案評估的資訊,例如是否失敗。

status

此專案的狀態。Gradle 始終使用狀態的 toString() 值。狀態預設為 release

subprojects

包含此專案子專案的集合。

tasks

此專案的任務。

version

此專案的版本。Gradle 始終使用版本的 toString() 值。版本預設為 unspecified

application 外掛程式新增的屬性

屬性描述
application

application 外掛程式新增的 JavaApplication

applicationDefaultJvmArgs

執行應用程式時傳遞至 JVM 的字串引數陣列

applicationDistribution

發佈內容的規格。

applicationName

應用程式的名稱。

executableDir

放置可執行檔的目錄

mainClassName

應用程式主要類別的完整名稱。

checkstyle 外掛程式新增的屬性

屬性描述
checkstyle

checkstyle 外掛程式新增的 CheckstyleExtension

codenarc 外掛程式新增的屬性

屬性描述
codenarc

codenarc 外掛程式新增的 CodeNarcExtension

distribution 外掛程式新增的屬性

屬性描述
distributions

distribution 外掛程式新增的 DistributionContainer

ear 外掛程式新增的屬性

屬性描述
appDirName

應用程式目錄的名稱,相對於專案目錄。預設為 "src/main/application"。

deploymentDescriptor

自訂部署描述符組態。預設為具有合理預設值的 "application.xml"。

generateDeploymentDescriptor

指定如果部署描述符不存在是否應生成它。預設值為 true。

libDirName

EAR 檔案中程式庫目錄的名稱。預設為 "lib"。

eclipse 外掛程式新增的屬性

屬性描述
eclipse

eclipse 外掛程式新增的 EclipseModel

idea 外掛程式新增的屬性

屬性描述
idea

idea 外掛程式新增的 IdeaModel

jacoco 外掛程式新增的屬性

屬性描述
jacoco

jacoco 外掛程式新增的 JacocoPluginExtension

java 外掛程式新增的屬性

屬性描述
archivesBaseName

用於歸檔檔案的基本名稱。

base

java 外掛程式新增的 BasePluginExtension

distsDirName

發佈目錄的名稱。這相對於專案的建置目錄進行解釋。

distsDirectory

用於生成 TAR 和 ZIP 歸檔的目錄。

docsDir

傳回指向預期用於所有文件根目錄的檔案。

docsDirName

文件目錄的名稱。可以是名稱或相對於建置目錄的路徑。

java

java 外掛程式新增的 JavaPluginExtension

libsDirName

程式庫目錄的名稱。這相對於專案的建置目錄進行解釋。

libsDirectory

用於生成 JAR 和 WAR 歸檔的目錄。

reporting

java 外掛程式新增的 ReportingExtension

sourceCompatibility

用於編譯 Java 原始碼的來源相容性。

sourceSets

原始碼集容器。

targetCompatibility

用於編譯 Java 原始碼的目標相容性。

testReportDir

傳回指向將用於報告的根目錄的檔案。

testReportDirName

測試報告目錄的名稱。可以是名稱或相對於 ReportingExtension.getBaseDir() 的路徑。

testResultsDir

傳回指向測試結果根目錄的檔案。

testResultsDirName

測試結果目錄的名稱。可以是名稱或相對於建置目錄的路徑。

pmd 外掛程式新增的屬性

屬性描述
pmd

pmd 外掛程式新增的 PmdExtension

project-report 外掛程式新增的屬性

屬性描述
projectReportDir

用於生成專案報告的目錄。

projectReportDirName

用於生成專案報告的目錄名稱,相對於專案的報告目錄。

publishing 外掛程式新增的屬性

屬性描述
publishing

publishing 外掛程式新增的 PublishingExtension

signing 外掛程式新增的屬性

屬性描述
簽署

由簽署外掛程式新增的 SigningExtension

visual-studio 外掛程式新增的屬性

屬性描述
visualStudio

由 visual-studio 外掛程式新增的 VisualStudioRootExtension

war 外掛程式新增的屬性

屬性描述
webAppDir

Web 應用程式目錄。

webAppDirName

相對於專案目錄的 Web 應用程式目錄名稱。

xcode 外掛程式新增的屬性

屬性描述
xcode

由 xcode 外掛程式新增的 XcodeRootExtension

方法

方法描述
absoluteProjectPath(路徑)

將名稱轉換為絕對專案路徑,解析相對於此專案的名稱。

afterEvaluate(閉包)

新增一個閉包,於此專案評估完成後立即呼叫。

afterEvaluate(動作)

新增一個動作,於此專案評估完成後立即呼叫。

allprojects(動作)

設定此專案及其每個子專案。

ant(設定動作)

針對此專案的 AntBuilder 執行給定的動作。您可以在您的建置檔中使用此功能來執行 Ant 任務。請參閱 Project.getAnt() 的 javadoc 中的範例

apply(閉包)

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

apply(選項)

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

apply(動作)

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

artifacts(設定動作)

設定此專案發布的產出物。

beforeEvaluate(閉包)

新增一個閉包,於此專案評估開始前立即呼叫。

beforeEvaluate(動作)

新增一個動作,於此專案評估開始前立即呼叫。

configure(物件, 設定閉包)

透過閉包設定物件集合。這等同於針對每個給定的物件呼叫 Project.configure(java.lang.Object, groovy.lang.Closure)

configure(物件, 設定動作)

透過動作設定物件集合。

configure(物件, 設定閉包)

透過閉包設定物件,閉包的委派設定為提供的物件。這樣您就不必多次指定設定陳述式的上下文。

container(類型)

建立一個容器,用於管理指定類型的具名物件。指定的類型必須具有一個公用建構子,該建構子將名稱作為 String 參數。

container(類型, 工廠閉包)

建立一個容器,用於管理指定類型的具名物件。給定的閉包用於建立物件實例。要建立的實例名稱作為參數傳遞給閉包。

container(類型, 工廠)

建立一個容器,用於管理指定類型的具名物件。給定的工廠用於建立物件實例。

copy(閉包)

複製指定的檔案。給定的閉包用於設定 CopySpec,然後用於複製檔案。範例

copy(動作)

複製指定的檔案。給定的動作用於設定 CopySpec,然後用於複製檔案。

copySpec()

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。

copySpec(閉包)

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。給定的閉包用於在 CopySpec 由此方法傳回之前設定它。

copySpec(動作)

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。給定的動作用於在 CopySpec 由此方法傳回之前設定它。

defaultTasks(預設任務)

設定此專案的預設任務名稱。當啟動建置時未提供任務名稱時,將使用這些任務。

delete(路徑)

刪除檔案和目錄。

delete(動作)

刪除指定的檔案。給定的動作用於設定 DeleteSpec,然後用於刪除檔案。

dependencyLocking(設定)

設定依賴鎖定

evaluationDependsOn(路徑)

宣告此專案對具有給定路徑的專案具有評估依賴性。

exec(閉包)
已棄用

執行外部命令。閉包設定 ExecSpec

exec(動作)
已棄用

執行外部命令。

file(路徑)

解析相對於此專案的專案目錄的檔案路徑。此方法根據其類型轉換提供的路徑

file(路徑, 驗證)

解析相對於此專案的專案目錄的檔案路徑,並使用給定的方案驗證它。請參閱 PathValidation 以取得可能的驗證列表。

fileTree(基礎目錄)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。

fileTree(基礎目錄, 設定閉包)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。閉包將用於設定新的檔案樹。檔案樹作為其委派傳遞給閉包。範例

fileTree(基礎目錄, 設定動作)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。動作將用於設定新的檔案樹。範例

fileTree(args)

使用提供的引數 Map 建立新的 ConfigurableFileTree。Map 將作為屬性套用至新的檔案樹。範例

files(路徑, 設定閉包)

使用給定的路徑建立新的 ConfigurableFileCollection。路徑根據 Project.files(java.lang.Object[]) 進行評估。檔案集合使用給定的閉包進行設定。檔案集合作為其委派傳遞給閉包。範例

files(路徑, 設定動作)

使用給定的路徑建立新的 ConfigurableFileCollection。路徑根據 Project.files(java.lang.Object[]) 進行評估。檔案集合使用給定的動作進行設定。範例

files(路徑)

傳回包含給定檔案的 ConfigurableFileCollection。您可以將以下任何類型傳遞給此方法

findProject(路徑)

依路徑尋找專案。如果路徑是相對路徑,則相對於此專案進行解釋。

findProperty(屬性名稱)

傳回給定屬性的值,如果找不到則傳回 null。此方法按如下方式尋找屬性

getAllTasks(遞迴)

傳回此專案中包含的任務 Map,以及可選的其子專案。

getTasksByName(名稱, 遞迴)

傳回此專案中包含的具有給定名稱的任務集合,以及可選的其子專案。注意: 這是一個昂貴的操作,因為它需要設定所有專案。

hasProperty(屬性名稱)

判斷此專案是否具有給定的屬性。請參閱此處以取得專案可用的屬性詳細資訊。

javaexec(閉包)
已棄用

執行 Java 主類別。閉包設定 JavaExecSpec

javaexec(動作)
已棄用

執行外部 Java 程序。

mkdir(路徑)

建立目錄並傳回指向它的檔案。

normalization(設定)

設定輸入正規化。

project(路徑)

依路徑尋找專案。如果路徑是相對路徑,則相對於此專案進行解釋。

project(路徑, 設定閉包)

依路徑尋找專案,並使用給定的閉包設定它。如果路徑是相對路徑,則相對於此專案進行解釋。目標專案作為閉包的委派傳遞給閉包。

project(路徑, 設定動作)

依路徑尋找專案,並使用給定的動作設定它。如果路徑是相對路徑,則相對於此專案進行解釋。

property(屬性名稱)

傳回給定屬性的值。此方法按如下方式尋找屬性

relativePath(路徑)

傳回從專案目錄到給定路徑的相對路徑。給定的路徑物件會 (邏輯上) 根據 Project.file(java.lang.Object) 的描述進行解析,並從中計算相對路徑。

relativeProjectPath(路徑)

將名稱轉換為相對於此專案的專案路徑。

setProperty(名稱, 值)

設定此專案的屬性。此方法在以下位置搜尋具有給定名稱的屬性,並在找到屬性的第一個位置設定屬性。

subprojects(動作)

設定此專案的子專案

sync(動作)

將目的地目錄的內容與某些來源目錄和檔案同步。給定的動作用於設定 SyncSpec,然後用於同步檔案。

tarTree(tarPath)

建立一個新的 FileTree,其中包含給定 TAR 檔案的內容。給定的 tarPath 路徑可以是

task(名稱)
已棄用

建立一個具有給定名稱的 Task,並將其新增至此專案。呼叫此方法等同於呼叫具有空選項 Map 的 Project.task(java.util.Map, java.lang.String)

task(名稱, 設定閉包)
已棄用

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的閉包以設定任務。

task(名稱, 設定動作)
已棄用

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的動作以設定任務。

task(args, 名稱)
已棄用

建立一個具有給定名稱的 Task,並將其新增至此專案。可以將建立選項的 Map 傳遞給此方法,以控制任務的建立方式。以下選項可用

task(args, 名稱, 設定閉包)
已棄用

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的閉包以設定任務。可以將建立選項的 Map 傳遞給此方法,以控制任務的建立方式。請參閱 Project.task(java.util.Map, java.lang.String) 以取得可用的選項。

uri(路徑)

將檔案路徑解析為 URI,相對於此專案的專案目錄。根據 Project.file(java.lang.Object) 的描述評估提供的路徑物件,但 'file:' URI 除外,任何 URI 方案都受支援。

zipTree(zipPath)

建立一個新的 FileTree,其中包含給定 ZIP 檔案的內容。給定的 zipPath 路徑根據 Project.file(java.lang.Object) 進行評估。您可以將此方法與 Project.copy(org.gradle.api.Action) 方法結合使用,以解壓縮 ZIP 檔案。

ear 外掛程式新增的方法

方法描述
appDirName(appDirName)

允許變更應用程式目錄。預設值為 "src/main/application"。

deploymentDescriptor(設定動作)

設定此 EAR 封存檔的部署描述符。

libDirName(libDirName)

允許變更 EAR 檔案中的函式庫目錄。預設值為 "lib"。

java 外掛程式新增的方法

方法描述
manifest()

建立 Manifest 的新實例。

manifest(閉包)

建立和設定 Manifest 的新實例。給定的閉包在傳回新的 manifest 實例之前設定它。

manifest(動作)

建立和設定 Manifest 的新實例。

腳本區塊

區塊描述
allprojects

設定此專案及其每個子專案。

ant

針對此專案的 AntBuilder 執行給定的閉包。您可以在您的建置檔中使用此功能來執行 Ant 任務。AntBuild 作為閉包的委派傳遞給閉包。請參閱 Project.getAnt() 的 javadoc 中的範例

artifacts

設定此專案發布的產出物。

buildscript

設定此專案的建置腳本類別路徑。

configurations

設定此專案的依賴組態。

dependencies

設定此專案的依賴項。

repositories

設定此專案的儲存庫。

subprojects

設定此專案的子專案。

application 外掛程式新增的腳本區塊

區塊描述
application

設定由 application 外掛程式新增的 JavaApplication

checkstyle 外掛程式新增的腳本區塊

區塊描述
checkstyle

設定由 checkstyle 外掛程式新增的 CheckstyleExtension

codenarc 外掛程式新增的腳本區塊

區塊描述
codenarc

設定由 codenarc 外掛程式新增的 CodeNarcExtension

distribution 外掛程式新增的腳本區塊

區塊描述
distributions

設定由 distribution 外掛程式新增的 DistributionContainer

ear 外掛程式新增的腳本區塊

區塊描述
deploymentDescriptor

設定此 EAR 封存檔的部署描述符。

eclipse 外掛程式新增的腳本區塊

區塊描述
eclipse

設定由 eclipse 外掛程式新增的 EclipseModel

idea 外掛程式新增的腳本區塊

區塊描述
idea

設定由 idea 外掛程式新增的 IdeaModel

jacoco 外掛程式新增的腳本區塊

區塊描述
jacoco

設定由 jacoco 外掛程式新增的 JacocoPluginExtension

java 外掛程式新增的腳本區塊

區塊描述
base

設定由 java 外掛程式新增的 BasePluginExtension

java

設定由 java 外掛程式新增的 JavaPluginExtension

reporting

設定由 java 外掛程式新增的 ReportingExtension

sourceSets

設定此專案的來源集。

pmd 外掛程式新增的腳本區塊

區塊描述
pmd

設定由 pmd 外掛程式新增的 PmdExtension

publishing 外掛程式新增的腳本區塊

區塊描述
publishing

設定由 publishing 外掛程式新增的 PublishingExtension

signing 外掛程式新增的腳本區塊

區塊描述
簽署

設定由 signing 外掛程式新增的 SigningExtension

visual-studio 外掛程式新增的腳本區塊

區塊描述
visualStudio

設定由 visual-studio 外掛程式新增的 VisualStudioRootExtension

xcode 外掛程式新增的腳本區塊

區塊描述
xcode

設定由 xcode 外掛程式新增的 XcodeRootExtension

屬性詳細資訊

Set<Project> allprojects (唯讀)

包含此專案及其子專案的集合。

AntBuilder ant (唯讀)

此專案的 AntBuilder。您可以在建置檔案中使用它來執行 ant 任務。請參閱以下範例。

task printChecksum {
  doLast {
    ant {
      //using ant checksum task to store the file checksum in the checksumOut ant property
      checksum(property: 'checksumOut', file: 'someFile.txt')

      //we can refer to the ant property created by checksum task:
      println "The checksum is: " + checksumOut
    }

    //we can refer to the ant property later as well:
    println "I just love to print checksums: " + ant.checksumOut
  }
}

考慮以下 Ant 目標範例

<target name='printChecksum'>
  <checksum property='checksumOut'>
    <fileset dir='.'>
      <include name='agile.txt'/>
    </fileset>
  </checksum>
  <echo>The checksum is: ${checksumOut}</echo>
</target>

以下是如何在 Gradle 中呈現。觀察 Ant XML 如何透過 Ant Builder 在 Groovy 中表示

task printChecksum {
  doLast {
    ant {
      checksum(property: 'checksumOut') {
        fileset(dir: '.') {
          include name: 'agile1.txt'
        }
      }
    }
    logger.lifecycle("The checksum is $ant.checksumOut")
  }
}

ArtifactHandler artifacts (唯讀)

傳回用於將專案產生的產出指派給組態的處理常式。

範例:請參閱 ArtifactHandler 的文件

File buildDir

注意:此屬性已棄用,並將在 Gradle 的下一個主要版本中移除。

此專案的建置目錄。建置目錄是所有產出生成到的目錄。建置目錄的預設值為 projectDir/build

File buildFile (唯讀)

此專案的建置腳本。

如果檔案存在,則在設定此專案時,將針對此專案進行評估。

ScriptHandler buildscript (唯讀)

此專案的建置腳本處理常式。您可以使用此處理常式來查詢有關此專案建置腳本的詳細資訊,並管理用於編譯和執行專案建置腳本的類別路徑。

Map<String, Project> childProjects (唯讀)

此專案的直接子專案。

ConfigurationContainer configurations (唯讀)

此專案的組態。

範例:請參閱 ConfigurationContainer 的文件

Convention convention (唯讀)

注意:此屬性已棄用,並將在 Gradle 的下一個主要版本中移除。

此專案的 Convention

您可以在您的建置檔中使用 convention 存取此屬性。您也可以像存取此專案的屬性和方法一樣,存取 Convention 物件的屬性和方法。請參閱此處以取得更多詳細資訊

List<String> defaultTasks

此專案的預設任務名稱。當啟動建置時未提供任務名稱時,會使用這些任務。

DependencyHandler dependencies (唯讀)

此專案的依賴處理常式。傳回的依賴處理常式實例可用於新增新的依賴。若要存取已宣告的依賴,可以使用組態。

範例:請參閱 DependencyHandler 的文件

DependencyLockingHandler dependencyLocking (唯讀)

提供對組態設定依賴鎖定的存取

String description

此專案的描述(如果有的話)。

ExtensionContainer extensions (唯讀)

允許將 DSL 擴充功能新增至專案。對外掛程式作者很有用。

Gradle gradle (唯讀)

此專案所屬的 Gradle 調用。

Object group

此專案的群組。Gradle 始終使用群組的 toString() 值。群組預設為以點作為分隔符號的路徑。

ProjectLayout layout (唯讀)

提供對此專案各種重要目錄的存取。

Logger logger (唯讀)

此專案的記錄器。您可以在建置檔案中使用它來寫入記錄訊息。

LoggingManager logging (唯讀)

LoggingManager,可用於接收記錄並控制此專案建置腳本的標準輸出/錯誤捕獲。預設情況下,System.out 會在 QUIET 記錄層級重新導向至 Gradle 記錄系統,而 System.err 會在 ERROR 記錄層級重新導向。

String name (唯讀)

此專案的名稱。專案的名稱在專案階層結構中不一定是唯一的。您應該使用 Project.getPath() 方法來取得專案的唯一識別碼。如果根專案未命名且位於檔案系統根目錄上,它將具有隨機產生的名稱

InputNormalizationHandler normalization (唯讀)

提供對組態設定輸入正規化的存取。

Project parent (唯讀)

此專案的父專案(如果有的話)。

String path (唯讀)

此專案的路徑。路徑是專案的完整名稱。

PluginManager pluginManager (唯讀)

此外掛程式感知物件的外掛程式管理員。

PluginContainer plugins (唯讀)

已套用至此物件的外掛程式容器。

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

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

請使用 PluginManager.hasPlugin(java.lang.String) 或類似方法來查詢外掛程式是否已套用,而不是透過外掛程式容器來執行。

Project project (唯讀)

傳回此專案。此方法在建置檔案中很有用,可明確存取專案屬性和方法。例如,使用 project.name 可以比使用 name 更好地表達您的意圖。此方法也允許您從屬性可能隱藏的範圍(例如,從方法或閉包)存取專案屬性。

File projectDir (唯讀)

包含專案建置檔案的目錄。

Map<String, ?> properties (唯讀)

此專案的屬性。請參閱 此處 以取得專案可用的屬性的詳細資訊。

RepositoryHandler repositories (唯讀)

傳回處理常式以建立儲存庫,這些儲存庫用於檢索依賴和上傳專案產生的產出。

ResourceHandler resources (唯讀)

提供對資源特定實用方法的存取,例如建立各種資源的工廠方法。

File rootDir (唯讀)

此專案的根目錄。根目錄是根專案的專案目錄。

Project rootProject (唯讀)

此專案所屬階層結構的根專案。在單一專案建置的情況下,此方法會傳回此專案。

ProjectState state (唯讀)

此專案的評估狀態。您可以使用它來存取有關此專案評估的資訊,例如是否失敗。

Object status

此專案的狀態。Gradle 始終使用狀態的 toString() 值。狀態預設為 release

專案的狀態只有在您將程式庫與模組描述符一起上傳時才有意義。此處指定的狀態將會是此模組描述符的一部分。

Set<Project> subprojects (唯讀)

包含此專案子專案的集合。

TaskContainer tasks (唯讀)

此專案的任務。

Object version

此專案的版本。Gradle 始終使用版本的 toString() 值。版本預設為 unspecified

JavaApplication application (唯讀)

application 外掛程式新增的 JavaApplication

Iterable<String> applicationDefaultJvmArgs

執行應用程式時傳遞至 JVM 的字串引數陣列

CopySpec applicationDistribution

發佈內容的規格。

使用此 CopySpec 在應用程式發佈中包含額外的檔案/資源。

plugins {
    id 'application'
}

application {
    applicationDistribution.from("some/dir") {
      include "*.txt"
    }
}

請注意,應用程式外掛程式預先配置此規範以:包含 "src/dist" 的內容、將應用程式啟動腳本複製到 "bin" 目錄,以及將建置的 jar 及其相依性複製到 "lib" 目錄。

String applicationName

應用程式的名稱。

String executableDir

放置可執行檔的目錄

String mainClassName

應用程式主要類別的完整名稱。

CheckstyleExtension checkstyle (唯讀)

checkstyle 外掛程式新增的 CheckstyleExtension

CodeNarcExtension codenarc (唯讀)

codenarc 外掛程式新增的 CodeNarcExtension

DistributionContainer distributions (唯讀)

distribution 外掛程式新增的 DistributionContainer

String appDirName

應用程式目錄的名稱,相對於專案目錄。預設為 "src/main/application"。

DeploymentDescriptor deploymentDescriptor

自訂部署描述符組態。預設為具有合理預設值的 "application.xml"。

Property<Boolean> generateDeploymentDescriptor

指定如果部署描述符不存在是否應生成它。預設值為 true。

String libDirName

EAR 檔案中程式庫目錄的名稱。預設為 "lib"。

EclipseModel eclipse (唯讀)

eclipse 外掛程式新增的 EclipseModel

IdeaModel idea (唯讀)

idea 外掛程式新增的 IdeaModel

JacocoPluginExtension jacoco (唯讀)

jacoco 外掛程式新增的 JacocoPluginExtension

String archivesBaseName

用於歸檔檔案的基本名稱。

BasePluginExtension base (唯讀)

java 外掛程式新增的 BasePluginExtension

String distsDirName

發佈目錄的名稱。這相對於專案的建置目錄進行解釋。

DirectoryProperty distsDirectory

用於生成 TAR 和 ZIP 歸檔的目錄。

File docsDir (唯讀)

傳回指向預期用於所有文件根目錄的檔案。

String docsDirName

文件目錄的名稱。可以是名稱或相對於建置目錄的路徑。

JavaPluginExtension java (唯讀)

java 外掛程式新增的 JavaPluginExtension

String libsDirName

程式庫目錄的名稱。這相對於專案的建置目錄進行解釋。

DirectoryProperty libsDirectory

用於生成 JAR 和 WAR 歸檔的目錄。

ReportingExtension reporting (唯讀)

java 外掛程式新增的 ReportingExtension

JavaVersion sourceCompatibility

用於編譯 Java 原始碼的來源相容性。

SourceSetContainer sourceSets (唯讀)

原始碼集容器。

JavaVersion targetCompatibility

用於編譯 Java 原始碼的目標相容性。

File testReportDir (唯讀)

傳回指向將用於報告的根目錄的檔案。

String testReportDirName

測試報告目錄的名稱。可以是名稱或相對於 ReportingExtension.getBaseDir() 的路徑。

File testResultsDir (唯讀)

傳回指向測試結果根目錄的檔案。

String testResultsDirName

測試結果目錄的名稱。可以是名稱或相對於建置目錄的路徑。

PmdExtension pmd (唯讀)

pmd 外掛程式新增的 PmdExtension

File projectReportDir (唯讀)

用於生成專案報告的目錄。

String projectReportDirName

用於生成專案報告的目錄名稱,相對於專案的報告目錄。

PublishingExtension publishing (唯讀)

publishing 外掛程式新增的 PublishingExtension

SigningExtension signing (唯讀)

由簽署外掛程式新增的 SigningExtension

VisualStudioRootExtension visualStudio (唯讀)

由 visual-studio 外掛程式新增的 VisualStudioRootExtension

File webAppDir (唯讀)

Web 應用程式目錄。

String webAppDirName

相對於專案目錄的 Web 應用程式目錄名稱。

XcodeRootExtension xcode (唯讀)

由 xcode 外掛程式新增的 XcodeRootExtension

方法詳情

String absoluteProjectPath(String path)

將名稱轉換為絕對專案路徑,解析相對於此專案的名稱。

void afterEvaluate(Closure closure)

新增一個閉包,於此專案評估完成後立即呼叫。

void afterEvaluate(Action<? super Project> action)

新增一個動作,於此專案評估完成後立即呼叫。

將專案作為參數傳遞給 action。傳遞給此方法的所有 action 會依傳遞順序執行。父專案可以將 action 新增至其子專案,以便在子專案的建置檔案執行後,根據其狀態進一步配置這些專案。

如果專案已經過評估,則此方法會失敗。

如果您在 afterEvaluate action 中呼叫此方法,則傳遞的 action 會在所有先前新增的 afterEvaluate action 完成執行後執行。

void allprojects(Action<? super Project> action)

設定此專案及其每個子專案。

此方法會針對此專案及其每個子專案執行給定的 Action

AntBuilder ant(Action<? super AntBuilder> configureAction)

針對此專案的 AntBuilder 執行給定的動作。您可以在您的建置檔中使用此功能來執行 Ant 任務。請參閱 Project.getAnt() 的 javadoc 中的範例

void apply(Closure closure)

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

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

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

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) 的不同之處在於,它允許多次調用配置 action 的方法。

void artifacts(Action<? super ArtifactHandler> configureAction)

設定此專案發布的產出物。

此方法會針對此專案的 ArtifactHandler 執行給定的 action。

範例

configurations {
  //declaring new configuration that will be used to associate with artifacts
  schema
}

task schemaJar(type: Jar) {
  //some imaginary task that creates a jar artifact with the schema
}

//associating the task that produces the artifact with the configuration
artifacts {
  //configuration name and the task:
  schema schemaJar
}

void beforeEvaluate(Closure closure)

新增一個閉包,於此專案評估開始前立即呼叫。

void beforeEvaluate(Action<? super Project> action)

新增一個動作,於此專案評估開始前立即呼叫。

將專案作為參數傳遞給 action。傳遞給此方法的所有 action 會依傳遞順序執行。

如果專案已經過評估,則 action 永遠不會執行。

如果您在 beforeEvaluate action 中呼叫此方法,則傳遞的 action 永遠不會執行。

Iterable<?> configure(Iterable<?> objects, Closure configureClosure)

透過閉包設定物件集合。這等同於針對每個給定的物件呼叫 Project.configure(java.lang.Object, groovy.lang.Closure)

Iterable<T> configure(Iterable<T> objects, Action<? super T> configureAction)

透過動作設定物件集合。

Object configure(Object object, Closure configureClosure)

透過閉包設定物件,閉包的委派設定為提供的物件。這樣您就不必多次指定設定陳述式的上下文。

取代

MyType myType = new MyType()
myType.doThis()
myType.doThat()

您可以改用

MyType myType = configure(new MyType()) {
    doThis()
    doThat()
}

被配置的物件也會作為參數傳遞給 closure,因此您可以在需要時明確存取它

configure(someObj) { obj -> obj.doThis() }

NamedDomainObjectContainer<T> container(Class<T> type)

建立一個容器,用於管理指定類型的具名物件。指定的類型必須具有一個公用建構子,該建構子將名稱作為 String 參數。

所有物件必須將其名稱公開為名為 "name" 的 bean 屬性。名稱在物件的生命週期中必須保持不變。

NamedDomainObjectContainer<T> container(Class<T> type, Closure factoryClosure)

建立一個容器,用於管理指定類型的具名物件。給定的閉包用於建立物件實例。要建立的實例名稱作為參數傳遞給閉包。

所有物件必須將其名稱公開為名為 "name" 的 bean 屬性。名稱在物件的生命週期中必須保持不變。

建立一個容器,用於管理指定類型的具名物件。給定的工廠用於建立物件實例。

所有物件必須將其名稱公開為名為 "name" 的 bean 屬性。名稱在物件的生命週期中必須保持不變。

WorkResult copy(Closure closure)

複製指定的檔案。給定的閉包用於設定 CopySpec,然後用於複製檔案。範例

copy {
   from configurations.runtimeClasspath
   into 'build/deploy/lib'
}

請注意,CopySpec 可以巢狀

copy {
   into 'build/webroot'
   exclude '**/.svn/**'
   from('src/main/webapp') {
      include '**/*.jsp'
      filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])
   }
   from('src/main/js') {
      include '**/*.js'
   }
}

WorkResult copy(Action<? super CopySpec> action)

複製指定的檔案。給定的動作用於設定 CopySpec,然後用於複製檔案。

CopySpec copySpec()

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。

CopySpec copySpec(Closure closure)

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。給定的閉包用於在 CopySpec 由此方法傳回之前設定它。

def baseSpec = copySpec {
   from "source"
   include "**/*.java"
}

task copy(type: Copy) {
   into "target"
   with baseSpec
}

CopySpec copySpec(Action<? super CopySpec> action)

建立一個 CopySpec,稍後可用於複製檔案或建立封存檔。給定的動作用於在 CopySpec 由此方法傳回之前設定它。

void defaultTasks(String... defaultTasks)

設定此專案的預設任務名稱。當啟動建置時未提供任務名稱時,將使用這些任務。

boolean delete(Object... paths)

刪除檔案和目錄。

這將不會追蹤符號連結。如果您也需要追蹤符號連結,請使用 Project.delete(org.gradle.api.Action)

WorkResult delete(Action<? super DeleteSpec> action)

刪除指定的檔案。給定的動作用於設定 DeleteSpec,然後用於刪除檔案。

範例

project.delete {
    delete 'somefile'
    followSymlinks = true
}

void dependencyLocking(Action<? super DependencyLockingHandler> configuration)

設定依賴鎖定

Project evaluationDependsOn(String path)

宣告此專案對具有給定路徑的專案具有評估依賴性。

ExecResult exec(Closure closure)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

執行外部命令。閉包設定 ExecSpec

ExecResult exec(Action<? super ExecSpec> action)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

執行外部命令。

給定的 action 配置 ExecSpec,用於啟動程序。此方法會封鎖直到程序終止,並傳回其結果。

File file(Object path)

解析相對於此專案的專案目錄的檔案路徑。此方法根據其類型轉換提供的路徑

  • 一個 CharSequence,包括 StringGString。相對於專案目錄進行解譯。以 file: 開頭的字串會被視為檔案 URL。
  • 一個 File。如果檔案是絕對檔案,則會按原樣傳回。否則,檔案的路徑會相對於專案目錄進行解譯。
  • 一個 Path。路徑必須與預設提供者相關聯,並且其處理方式與 File 的執行個體相同。
  • 一個 URIURL。URL 的路徑會解譯為檔案路徑。僅支援 file: URL。
  • 一個 DirectoryRegularFile
  • 任何支援類型的 Provider。提供者的值會被遞迴解析。
  • 一個 TextResource
  • 一個 Groovy Closure 或 Kotlin 函數,會回傳任何支援的類型。閉包的回傳值會被遞迴解析。
  • 一個 Callable,會回傳任何支援的類型。Callable 的回傳值會被遞迴解析。

File file(Object path, PathValidation validation)

解析相對於此專案的專案目錄的檔案路徑,並使用給定的方案驗證它。請參閱 PathValidation 以取得可能的驗證列表。

ConfigurableFileTree fileTree(Object baseDir)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

def myTree = fileTree("src")
myTree.include "**/*.java"
myTree.builtBy "someTask"

task copy(type: Copy) {
   from myTree
}

FileTree 中檔案的順序是不穩定的,即使在同一部電腦上也是如此。

ConfigurableFileTree fileTree(Object baseDir, Closure configureClosure)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。閉包將用於設定新的檔案樹。檔案樹作為其委派傳遞給閉包。範例

def myTree = fileTree('src') {
   exclude '**/.data/**'
   builtBy 'someTask'
}

task copy(type: Copy) {
   from myTree
}

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

FileTree 中檔案的順序是不穩定的,即使在同一部電腦上也是如此。

ConfigurableFileTree fileTree(Object baseDir, Action<? super ConfigurableFileTree> configureAction)

使用給定的基礎目錄建立新的 ConfigurableFileTree。給定的 baseDir 路徑根據 Project.file(java.lang.Object) 進行評估。動作將用於設定新的檔案樹。範例

def myTree = fileTree('src') {
   exclude '**/.data/**'
   builtBy 'someTask'
}

task copy(type: Copy) {
   from myTree
}

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

FileTree 中檔案的順序是不穩定的,即使在同一部電腦上也是如此。

ConfigurableFileTree fileTree(Map<String, ?> args)

使用提供的引數 Map 建立新的 ConfigurableFileTree。Map 將作為屬性套用至新的檔案樹。範例

def myTree = fileTree(dir:'src', excludes:['**/ignore/**', '**/.data/**'])

task copy(type: Copy) {
    from myTree
}

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

FileTree 中檔案的順序是不穩定的,即使在同一部電腦上也是如此。

ConfigurableFileCollection files(Object paths, Closure configureClosure)

使用給定的路徑建立新的 ConfigurableFileCollection。路徑根據 Project.files(java.lang.Object[]) 進行評估。檔案集合使用給定的閉包進行設定。檔案集合作為其委派傳遞給閉包。範例

files "$buildDir/classes" {
    builtBy 'compile'
}

回傳的檔案集合是延遲載入的,因此只有在查詢檔案集合的內容時才會評估路徑。檔案集合也是即時的,因此每次查詢集合的內容時都會評估上述內容。

使用給定的路徑建立新的 ConfigurableFileCollection。路徑根據 Project.files(java.lang.Object[]) 進行評估。檔案集合使用給定的動作進行設定。範例

files "$buildDir/classes" {
    builtBy 'compile'
}

回傳的檔案集合是延遲載入的,因此只有在查詢檔案集合的內容時才會評估路徑。檔案集合也是即時的,因此每次查詢集合的內容時都會評估上述內容。

傳回包含給定檔案的 ConfigurableFileCollection。您可以將以下任何類型傳遞給此方法

  • 一個 CharSequence,包含 StringGString。 相對於專案目錄進行解釋,如同 Project.file(java.lang.Object)。 以 file: 開頭的字串會被視為檔案 URL。
  • 一個 File。 相對於專案目錄進行解釋,如同 Project.file(java.lang.Object)
  • 一個 Path,如同 Project.file(java.lang.Object)
  • 一個 URIURL。 URL 的路徑會被解釋為檔案路徑。 僅支援 file: URL。
  • 一個 DirectoryRegularFile
  • 一個 CollectionIterable,或是一個包含任何支援類型物件的陣列。 集合中的元素會被遞迴轉換為檔案。
  • 一個 FileCollection。 集合的內容會包含在回傳的集合中。
  • 一個 FileTreeDirectoryTree。 樹狀結構的內容會包含在回傳的集合中。
  • 任何支援類型的 Provider。 提供者的值會被遞迴轉換為檔案。 如果提供者代表任務的輸出,則當檔案集合被用作另一個任務的輸入時,該任務會被執行。
  • 一個 Callable,會回傳任何支援的類型。 call() 方法的回傳值會被遞迴轉換為檔案。 null 回傳值會被視為空集合。
  • 一個 Groovy Closure 或 Kotlin 函數,會回傳此處列出的任何類型。 閉包的回傳值會被遞迴轉換為檔案。 null 回傳值會被視為空集合。
  • 一個 Task。 轉換為任務的輸出檔案。 當檔案集合被用作另一個任務的輸入時,該任務會被執行。
  • 一個 TaskOutputs。 轉換為相關任務的輸出檔案。 當檔案集合被用作另一個任務的輸入時,該任務會被執行。
  • 任何其他內容都會被視為錯誤。

回傳的檔案集合是延遲載入的,因此只有在查詢檔案集合的內容時才會評估路徑。檔案集合也是即時的,因此每次查詢集合的內容時都會評估上述內容。

回傳的檔案集合會維持所提供路徑的迭代順序。

回傳的檔案集合會維持產生檔案的任務的詳細資訊,以便在檔案集合被用作某些任務的輸入時,這些任務會被執行。

此方法也可以用於建立一個空集合,該集合稍後可以被變更以加入元素。

Project findProject(String path)

依路徑尋找專案。如果路徑是相對路徑,則相對於此專案進行解釋。

Object findProperty(String propertyName)

傳回給定屬性的值,如果找不到則傳回 null。此方法按如下方式尋找屬性

  1. 如果此專案物件具有指定名稱的屬性,則傳回該屬性的值。
  2. 如果此專案具有指定名稱的擴充功能,則傳回該擴充功能。
  3. 如果此專案的慣例物件具有指定名稱的屬性,則傳回該屬性的值。
  4. 如果此專案具有指定名稱的額外屬性,則傳回該屬性的值。
  5. 如果此專案具有指定名稱的任務,則傳回該任務。
  6. 在此專案的祖先專案中搜尋具有指定名稱的慣例屬性或額外屬性。
  7. 如果找不到,則傳回 null 值。

Map<Project, Set<Task>> getAllTasks(boolean recursive)

傳回此專案中包含的任務 Map,以及可選的其子專案。

Set<Task> getTasksByName(String name, boolean recursive)

傳回此專案中包含的具有給定名稱的任務集合,以及可選的其子專案。注意: 這是一個昂貴的操作,因為它需要設定所有專案。

boolean hasProperty(String propertyName)

判斷此專案是否具有給定的屬性。請參閱此處以取得專案可用的屬性詳細資訊。

ExecResult javaexec(Closure closure)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

執行 Java 主類別。閉包設定 JavaExecSpec

ExecResult javaexec(Action<? super JavaExecSpec> action)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

執行外部 Java 程序。

給定的 action 會配置一個 JavaExecSpec,用於啟動程序。此方法會阻塞直到程序終止,並傳回其結果。

File mkdir(Object path)

建立目錄並傳回指向它的檔案。

void normalization(Action<? super InputNormalizationHandler> configuration)

設定輸入正規化。

Project project(String path)

依路徑尋找專案。如果路徑是相對路徑,則相對於此專案進行解釋。

Project project(String path, Closure configureClosure)

依路徑尋找專案,並使用給定的閉包設定它。如果路徑是相對路徑,則相對於此專案進行解釋。目標專案作為閉包的委派傳遞給閉包。

Project project(String path, Action<? super Project> configureAction)

依路徑尋找專案,並使用給定的動作設定它。如果路徑是相對路徑,則相對於此專案進行解釋。

Object property(String propertyName)

傳回給定屬性的值。此方法按如下方式尋找屬性

  1. 如果此專案物件具有指定名稱的屬性,則傳回該屬性的值。
  2. 如果此專案具有指定名稱的擴充功能,則傳回該擴充功能。
  3. 如果此專案的慣例物件具有指定名稱的屬性,則傳回該屬性的值。
  4. 如果此專案具有指定名稱的額外屬性,則傳回該屬性的值。
  5. 如果此專案具有指定名稱的任務,則傳回該任務。
  6. 在此專案的祖先專案中搜尋具有指定名稱的慣例屬性或額外屬性。
  7. 如果找不到,則會拋出 MissingPropertyException

String relativePath(Object path)

傳回從專案目錄到給定路徑的相對路徑。給定的路徑物件會 (邏輯上) 根據 Project.file(java.lang.Object) 的描述進行解析,並從中計算相對路徑。

String relativeProjectPath(String path)

將名稱轉換為相對於此專案的專案路徑。

void setProperty(String name, Object value)

設定此專案的屬性。此方法在以下位置搜尋具有給定名稱的屬性,並在找到屬性的第一個位置設定屬性。

  1. 專案物件本身。 例如,rootDir 專案屬性。
  2. 專案的 Convention 物件。 例如,srcRootName java 外掛程式屬性。
  3. 專案的額外屬性。

如果找不到屬性,則會拋出 MissingPropertyException

void subprojects(Action<? super Project> action)

設定此專案的子專案

此方法針對此專案的子專案執行給定的 Action

WorkResult sync(Action<? super SyncSpec> action)

將目的地目錄的內容與某些來源目錄和檔案同步。給定的動作用於設定 SyncSpec,然後用於同步檔案。

此方法類似於 Project.copy(org.gradle.api.Action) 任務,但目標目錄只會包含複製的檔案。除非指定保留選項,否則在複製檔案之前,將刪除目標目錄中存在的所有檔案。

範例

project.sync {
   from 'my/shared/dependencyDir'
   into 'build/deps/compile'
}

請注意,您可以保留目標目錄中已存在的輸出

project.sync {
    from 'source'
    into 'dest'
    preserve {
        include 'extraDir/**'
        include 'dir1/**'
        exclude 'dir1/extra.txt'
    }
}

FileTree tarTree(Object tarPath)

建立一個新的 FileTree,其中包含給定 TAR 檔案的內容。給定的 tarPath 路徑可以是

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

除非傳遞資源的自訂實作,否則 tar 樹會嘗試根據檔案副檔名猜測壓縮方式。

您可以將此方法與 Project.copy(org.gradle.api.Action) 方法結合使用,以解壓縮 TAR 檔案

task untar(type: Copy) {
  from tarTree('someCompressedTar.gzip')

  //tar tree attempts to guess the compression based on the file extension
  //however if you must specify the compression explicitly you can:
  from tarTree(resources.gzip('someTar.ext'))

  //in case you work with unconventionally compressed tars
  //you can provide your own implementation of a ReadableResource:
  //from tarTree(yourOwnResource as ReadableResource)

  into 'dest'
}

Task task(String name)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

建立一個具有給定名稱的 Task,並將其新增至此專案。呼叫此方法等同於呼叫具有空選項 Map 的 Project.task(java.util.Map, java.lang.String)

將任務新增至專案後,即可作為專案的屬性使用,以便您可以在組建檔案中依名稱參照任務。 請參閱 屬性 以了解更多詳細資訊

如果具有指定名稱的任務已存在於此專案中,則會拋出例外。

Task task(String name, Closure configureClosure)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的閉包以設定任務。

將任務新增至專案後,即可作為專案的屬性使用,以便您可以在組建檔案中依名稱參照任務。 請參閱 此處 以了解更多詳細資訊

Task task(String name, Action<? super Task> configureAction)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的動作以設定任務。

將任務新增至專案後,即可作為專案的屬性使用,以便您可以在組建檔案中依名稱參照任務。 請參閱 此處 以了解更多詳細資訊

Task task(Map<String, ?> args, String name)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

建立一個具有給定名稱的 Task,並將其新增至此專案。可以將建立選項的 Map 傳遞給此方法,以控制任務的建立方式。以下選項可用

<caption>允許的映射鍵</caption>
選項描述預設值
type要建立的任務類別。DefaultTask
overwrite取代現有的任務?false
dependsOn此任務所依賴的任務名稱或任務名稱集合[]
action要新增至任務的閉包或 Actionnull
description任務的描述。null
group此任務所屬的任務群組。null

將任務新增至專案後,即可作為專案的屬性使用,以便您可以在組建檔案中依名稱參照任務。 請參閱 此處 以了解更多詳細資訊

如果具有指定名稱的任務已存在於此專案中,且 override 選項未設定為 true,則會拋出例外。

Task task(Map<String, ?> args, String name, Closure configureClosure)

注意:此方法已過時,並將在 Gradle 的下一個主要版本中移除。

建立一個具有給定名稱的 Task,並將其新增至此專案。在傳回任務之前,將執行給定的閉包以設定任務。可以將建立選項的 Map 傳遞給此方法,以控制任務的建立方式。請參閱 Project.task(java.util.Map, java.lang.String) 以取得可用的選項。

將任務新增至專案後,即可作為專案的屬性使用,以便您可以在組建檔案中依名稱參照任務。 請參閱 此處 以了解更多詳細資訊

如果具有指定名稱的任務已存在於此專案中,且 override 選項未設定為 true,則會拋出例外。

URI uri(Object path)

將檔案路徑解析為 URI,相對於此專案的專案目錄。根據 Project.file(java.lang.Object) 的描述評估提供的路徑物件,但 'file:' URI 除外,任何 URI 方案都受支援。

FileTree zipTree(Object zipPath)

建立一個新的 FileTree,其中包含給定 ZIP 檔案的內容。給定的 zipPath 路徑根據 Project.file(java.lang.Object) 進行評估。您可以將此方法與 Project.copy(org.gradle.api.Action) 方法結合使用,以解壓縮 ZIP 檔案。

回傳的檔案樹是延遲載入的,因此只有在查詢檔案樹的內容時才會掃描檔案。檔案樹也是即時的,因此每次查詢檔案樹的內容時都會掃描檔案。

void appDirName(String appDirName)

允許變更應用程式目錄。預設值為 "src/main/application"。

EarPluginConvention deploymentDescriptor(Action<? super DeploymentDescriptor> configureAction)

設定此 EAR 封存檔的部署描述符。

給定的 action 會執行以配置部署描述符。

void libDirName(String libDirName)

允許變更 EAR 檔案中的函式庫目錄。預設值為 "lib"。

Manifest manifest()

建立 Manifest 的新實例。

Manifest manifest(Closure closure)

建立和設定 Manifest 的新實例。給定的閉包在傳回新的 manifest 實例之前設定它。

Manifest manifest(Action<? super Manifest> action)

建立和設定 Manifest 的新實例。

Script block details

allprojects { }

設定此專案及其每個子專案。

此方法針對此專案及其子專案執行給定的閉包。目標 Project 作為閉包的委派傳遞給閉包。

委派至
allprojects 中的每個 Project

ant { }

針對此專案的 AntBuilder 執行給定的閉包。您可以在您的建置檔中使用此功能來執行 Ant 任務。AntBuild 作為閉包的委派傳遞給閉包。請參閱 Project.getAnt() 的 javadoc 中的範例

委派至
來自 antAntBuilder

artifacts { }

設定此專案發布的產出物。

此方法針對此專案的 ArtifactHandler 執行給定的閉包。ArtifactHandler 作為閉包的委派傳遞給閉包。

範例

configurations {
  //declaring new configuration that will be used to associate with artifacts
  schema
}

task schemaJar(type: Jar) {
  //some imaginary task that creates a jar artifact with the schema
}

//associating the task that produces the artifact with the configuration
artifacts {
  //configuration name and the task:
  schema schemaJar
}
委派至
來自 artifactsArtifactHandler

buildscript { }

設定此專案的建置腳本類別路徑。

給定的閉包針對此專案的 ScriptHandler 執行。ScriptHandler 作為閉包的委派傳遞給閉包。

委派至
來自 buildscriptScriptHandler

configurations { }

設定此專案的依賴組態。

此方法會針對此專案的 ConfigurationContainer 執行給定的閉包。ConfigurationContainer 會作為閉包的委派傳遞至閉包。

範例:請參閱 ConfigurationContainer 的文件

dependencies { }

設定此專案的依賴項。

此方法會針對此專案的 DependencyHandler 執行給定的閉包。DependencyHandler 會作為閉包的委派傳遞至閉包。

範例:請參閱 DependencyHandler 的文件

委派至
來自 dependenciesDependencyHandler

repositories { }

設定此專案的儲存庫。

此方法會針對此專案的 RepositoryHandler 執行給定的閉包。RepositoryHandler 會作為閉包的委派傳遞至閉包。

委派至
來自 repositoriesRepositoryHandler

subprojects { }

設定此專案的子專案。

此方法會針對此專案的每個子專案執行給定的閉包。目標 Project 會作為閉包的委派傳遞至閉包。

委派至
subprojects 中的每個 Project

application { }

設定由 application 外掛程式新增的 JavaApplication

委派至
來自 applicationJavaApplication

checkstyle { }

設定由 checkstyle 外掛程式新增的 CheckstyleExtension

委派至
來自 checkstyleCheckstyleExtension

codenarc { }

設定由 codenarc 外掛程式新增的 CodeNarcExtension

委派至
來自 codenarcCodeNarcExtension

distributions { }

設定由 distribution 外掛程式新增的 DistributionContainer

deploymentDescriptor { }

設定此 EAR 封存檔的部署描述符。

給定的閉包會被執行以設定部署描述符。 DeploymentDescriptor 會作為其委派傳遞至閉包。

eclipse { }

設定由 eclipse 外掛程式新增的 EclipseModel

委派至
來自 eclipseEclipseModel

idea { }

設定由 idea 外掛程式新增的 IdeaModel

委派至
來自 ideaIdeaModel

jacoco { }

設定由 jacoco 外掛程式新增的 JacocoPluginExtension

委派至
來自 jacocoJacocoPluginExtension

base { }

設定由 java 外掛程式新增的 BasePluginExtension

委派至
來自 baseBasePluginExtension

java { }

設定由 java 外掛程式新增的 JavaPluginExtension

委派至
來自 javaJavaPluginExtension

reporting { }

設定由 java 外掛程式新增的 ReportingExtension

委派至
來自 reportingReportingExtension

sourceSets { }

設定此專案的來源集。

給定的閉包會被執行以設定 SourceSetContainerSourceSetContainer 會作為其委派傳遞至閉包。

請參閱以下範例,瞭解如何存取 SourceSet 'main',以及如何設定 SourceDirectorySet 'java' 以排除某些套件的編譯。

plugins {
    id 'java'
}

sourceSets {
  main {
    java {
      exclude 'some/unwanted/package/**'
    }
  }
}
委派至
來自 sourceSetsSourceSetContainer

pmd { }

設定由 pmd 外掛程式新增的 PmdExtension

委派至
來自 pmdPmdExtension

publishing { }

設定由 publishing 外掛程式新增的 PublishingExtension

委派至
來自 publishingPublishingExtension

signing { }

設定由 signing 外掛程式新增的 SigningExtension

委派至
來自 signingSigningExtension

visualStudio { }

設定由 visual-studio 外掛程式新增的 VisualStudioRootExtension

xcode { }

設定由 xcode 外掛程式新增的 XcodeRootExtension

委派至
來自 xcodeXcodeRootExtension