以下詞彙表可協助您理解 Gradle 術語。
A
- 成品
-
建置產生的檔案或目錄,例如 JAR、ZIP 發行版本或原生可執行檔。
成品通常設計為供使用者和其他專案使用或取用,或部署到託管系統。在這種情況下,成品是單一檔案。在專案間相依性的情況下,目錄很常見,以避免產生可發布成品的成本。
C
- 組件
-
模組的任何單一版本。
對於外部函式庫,術語組件指的是一個已發布的函式庫版本。
- 組件中繼資料規則
-
組件中繼資料規則是在從儲存庫擷取組件的中繼資料後修改組件中繼資料的規則,例如,新增遺失的資訊或更正不正確的資訊。與解析規則相反,組件中繼資料規則在解析開始之前套用。組件中繼資料規則定義為建置邏輯的一部分,並且可以透過外掛程式共用。如需更多資訊,請參閱關於使用組件中繼資料規則修正中繼資料的章節。
- 配置階段
-
Gradle 建置由兩個主要階段組成,配置階段(不要與[sub:terminology_configuration] 實例混淆)和執行階段。
配置階段首先發生,並且是單執行緒的。
- 慣例外掛程式
-
建置在生態系統外掛程式之上的[sub:terminology_plugin],它將常見的慣例套用至使用該外掛程式的建置腳本。
- 跨配置
-
請參閱跨專案配置。
- 跨專案配置
-
跨專案配置是指在多專案建置中管理和自訂多個子專案。
它允許您在共用的
build.gradle(.kts)
或settings.gradle.(kts)
檔案中定義常見設定、相依性和任務,通常位於根專案中build.gradlesubprojects { apply plugin: 'java' repositories { mavenCentral() } dependencies { testImplementation 'junit:junit:4.13.2' } }
跨專案配置通常會破壞專案隔離和並行專案執行,因此您應盡可能使用慣例外掛程式或適當的 API
build.gradlegradle.lifecycle.beforeProject { repositories { mavenCentral() } }
應始終避免以下跨專案配置範例
subprojectA/build.gradletasks.register("customTask") { // Avoid this! Directly accessing outputs from another subproject's task def outputFile = project(":subprojectB").tasks.named("someTask").get().outputs.files.singleFile inputs.file(outputFile) doLast { println("Processing file from subprojectB: ${outputFile}") } }
subprojectB/build.gradletasks.register("someTask") { def outputFile = layout.buildDirectory.file("output.txt") outputs.file(outputFile) doLast { outputFile.get().asFile.text = "Output from subprojectB" println("Generated output file in subprojectB: ${outputFile.get().asFile}") } }
這會將
subprojectA
與subprojectB
緊密耦合,從而破壞模組化,並在並行建置或配置快取期間產生潛在問題。
E
- 生態系統外掛程式
-
[sub:terminology_plugin] 負責建置語言,例如 Java(
java
和java-library
)、Groovy、Scala、Android、Kotlin 等。許多外掛程式由 Gradle 維護,並且是 Gradle 發行版本的一部分。
F
- 功能變體
-
功能變體是表示組件功能的變體,可以單獨選擇或不選擇。功能變體由一個或多個功能識別。如需更多資訊,請參閱關於模型化功能變體和選用相依性的章節。
G
- Gradle 建置
-
Gradle 建置可以由一個或多個 Gradle 專案組成,並且通常使用根目錄中的
settings.gradle(.kts)
檔案進行配置。叫用時,Gradle 建置會根據定義的建置邏輯執行一組任務,通常使用 Gradle Wrapper (
./gradlew
)。
I
- 增量建置
-
增量建置僅執行必要的任務。如果我們執行任何原始程式碼,Gradle 會先檢查該原始程式碼是否已執行過。如果程式碼有一些變更,則會執行該程式碼,但如果沒有變更,則會略過該程式碼的執行。
- Init 腳本
-
init 或初始化腳本由
Gradle
類型的實例支援。
M
- MavenCentral
-
MavenCentral 是託管 Maven 發布版本的主要儲存庫。它由一家名為 Sonatype 的公司營運,並且是許多生態系統的預設儲存庫。
存在許多其他儲存庫,例如(現在已停用的)jcenter 或 Google Maven 儲存庫。
- 模組
-
隨著時間推移而發展的一段軟體,例如 Google Guava。每個模組都有一個名稱。每個模組發行版本都以模組版本最佳地表示。為了方便取用,模組可以託管在儲存庫中。
- 模組中繼資料
-
模組的發行版本提供中繼資料。中繼資料是更詳細地描述模組的資料,例如,關於成品位置或所需傳遞相依性的資訊。Gradle 提供自己的中繼資料格式,稱為 Gradle 模組中繼資料 (
.module
檔案),但也支援 Maven (.pom
) 和 Ivy (ivy.xml
) 中繼資料。請參閱關於了解 Gradle 模組中繼資料的章節,以取得關於支援的中繼資料格式的更多資訊。
P
- 平台
-
平台是一組旨在一起使用的模組。平台有不同的類別,對應於不同的使用案例
- 外掛程式
-
Gradle 建置在一個外掛程式系統之上。Gradle 本身主要由基礎架構組成,例如適用於所有專案類型的複雜相依性解析引擎。其餘功能來自外掛程式,包括與 Gradle 本身一起發行的「核心」外掛程式、第三方外掛程式和給定建置中的腳本外掛程式。
根據套用它們的上下文,外掛程式有三種種類
外掛程式可以實作為所謂的二進制外掛程式(也就是說,透過明確實作上述特定的泛型介面之一),或作為預編譯腳本外掛程式。這種區別僅僅是一個實作細節。
- 預編譯腳本外掛程式
-
等效於外掛程式,但編寫方式使其看起來像一個建置腳本,預編譯腳本外掛程式可以使用 Groovy 或 Kotlin 編寫,分別套用
groovy-gradle-plugin
或kotlin-dsl
外掛程式。
- 專案
-
通常稱為「模組」,每個 Gradle 專案都由
Project
實例支援,因此得名。大多數 Gradle 專案由許多專案(通常稱為「子專案」)組成。
- 發布版本
-
應該作為單一實體發布到儲存庫以供消費者使用的檔案和中繼資料的描述。
發布版本具有名稱,並且由一個或多個成品以及關於這些成品的資訊(中繼資料)組成。
T
- 任務
-
每個專案都由一個或多個任務組成。每個任務都應該是原子的(但通常不是),具有輸入和輸出。Gradle 執行任務以執行其工作。
任務範例包括:編譯原始程式碼、建立成品(例如 jar 或 apk)、產生 Javadoc、執行靜態分析(例如 lint)、刪除暫存檔或發布到儲存庫等。
當要求執行 Gradle 任務時,我們可以看到任務的結果。結果將是
EXECUTED
、SKIPPED
、FAILED
、FROM-CACHE
、UP-TO-DATE
、NO-SOURCE
或空白(表示已執行)之一。