Gradle 中的 BuildScripts 塊
一、概述
在本教程中,我們將了解 Gradle 中的構建腳本塊( build.gradle
文件中的腳本)並詳細了解buildScript
塊的用途。
2.簡介
2.1.什麼是搖籃?
它是一個構建自動化工具,可以完成編譯、打包、測試、部署、發布、依賴解析等任務。如果沒有它,我們將不得不手動完成這些任務,這是相當複雜和耗時的。在當今的軟件開發中,沒有這樣的構建工具就很難工作。
2.2. Gradle 的常用構建腳本塊
在本節中,我們將簡要了解最常見的構建腳本塊。 **allProjects**
、 subProjects
、 **plugins
、 dependencies
、 repositories
、 publishing
和buildScript
**是最常見的構建腳本塊。給定的列表介紹了這些塊的概念:
-
allProjects
塊配置根項目和每個子項目。 - 與
allProjects,
subProjects
塊僅配置子項目。 -
[plugins](https://docs.gradle.org/current/userguide/plugins.html)
通過帶來一組有用的特性來擴展 Gradle 的功能。例如,java
插件添加了 assemble、build、clean、jar、documentation 等任務,等等。 -
dependencies
顧名思義,它是一個聲明我們項目所需的所有 jar 的地方。 -
[repositories](https://docs.gradle.org/current/userguide/declaring_repositories.html#header)
塊包含 Gradle 從中下載dependencies
塊中聲明的 jar 的位置。可以聲明按聲明順序執行的多個位置。 - 當我們開發一個庫並希望發布它時,
[publishing](https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:publishing(groovy.lang.Closure))
塊被聲明。此塊包含詳細信息,例如庫 jar 的坐標和包含要發布的位置的repositories
塊。
現在,讓我們考慮一個用例,我們想在構建腳本中使用一個庫。在這種情況下,我們不能使用**dependencies
塊,因為它包含項目類路徑所需的 jars** 。
由於我們想在構建腳本本身中使用該庫,因此需要**將此庫添加到腳本類路徑中。**這就是buildScript is for
。下一節將針對此用例深入討論buildScript
塊。
3. BuildScript 塊的用途
考慮到上面定義的用例,假設在 Spring Boot 應用程序中,我們想要在構建腳本中讀取 application.yml 文件的定義屬性。為此,我們可以使用一個名為snakeyaml
的庫來解析 YAML 文件並輕鬆讀取屬性。
正如我們在上一節中討論的那樣,我們需要在腳本類路徑上使用這個庫。解決方案是將其作為依賴項添加到buildScript
塊中。
該腳本顯示瞭如何讀取 application.yml 文件的屬性temp.files.path
。 buildScript
塊包含snakeyaml
庫的依賴項和用於下載它的存儲庫位置:
import org.yaml.snakeyaml.Yaml
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'org.yaml', name: 'snakeyaml', version: '1.19'
}
}
plugins {
//plugins
}
def prop = new Yaml().loadAll(new File("$projectDir/src/main/resources/application.yml")
.newInputStream()).first()
var path = prop.temp.files.path
路徑變量包含temp.files.path.
有關buildScript
塊的更多信息:
- 它可以包含除項目類型依賴項之外的任何類型的依賴項。
- 對於多項目構建,聲明的依賴項可用於其所有子項目的構建腳本
.
- 要將作為外部 jar 可用的二進制插件添加到項目中,我們應該將它們添加到構建腳本類路徑中,然後應用插件。
4。結論
在本教程中,我們了解了 Gradle 的使用、構建腳本最常見塊的用途,並通過一個用例深入研究了buildScript
塊。