第二部分:執行 Gradle 任務
透過執行 Gradle 任務並查看其輸出,學習 Gradle 任務的基礎知識。
步驟 0. 開始之前
-
您已在第一部分中初始化您的 Java 應用程式。
步驟 1. 檢視可用的任務
任務是 Gradle 可以作為建置一部分完成的基本工作單元。
在 tutorial
目錄中,輸入以下命令以列出專案中所有可用的任務
$ ./gradlew tasks
該列表包含 application
外掛及其應用的外掛所貢獻的任務
Application tasks
-----------------
run - Runs this project as a JVM application
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
...
Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.
...
Other tasks
-----------
compileJava - Compiles main Java source.
...
任務可能負責編譯、複製和移動檔案、建立 JAR 檔案、產生 Javadoc、將工件發布到儲存庫,或許多其他離散的工作單元。
您也可以透過執行 ./gradlew :app:tasks
,僅列出 app
子專案中可用的任務。
您可以使用 --all 選項在任務列表中取得更多資訊:./gradlew tasks --all 。 |
在本教學的第一部分中,我們使用 ./gradlew build
命令執行了 build
任務。
步驟 2. 了解任務
我們已經列出了專案初始化時可用的任務,但如果我們想要建立自己的任務呢?
Gradle 提供了許多內建任務,開發人員可以使用這些任務來增強建置腳本。
此範例任務使用 Copy
內建任務,將 *.war
檔案從 source
目錄複製到 target
目錄。
tasks.register<Copy>("copyTask") {
from("source")
into("target")
include("*.war")
}
tasks.register("copyTask", Copy) {
from("source")
into("target")
include("*.war")
}
如果將此任務新增至 app
子專案目錄中的 build.gradle(.kts)
檔案,則可以使用命令 ./gradlew :app:copyTask
執行。
常用的內建任務包括
-
Copy -
Copy
用於複製檔案。 -
Delete -
Delete
用於刪除檔案和目錄。 -
Exec -
Exec
用於執行任意的作業系統命令。 -
Zip -
Zip
用於捆綁檔案。
Kotlin 和 Groovy DSL 中記錄了更多。
步驟 3. 了解任務之間的依賴關係
很多時候,一個任務需要另一個任務先執行。如果任務 B 使用任務 A 的輸出,則任務 A 必須在任務 B 開始之前完成。
-
任務可以顯式宣告其依賴關係。
-
任務可以隱式依賴其他任務。
以下是一個顯式任務依賴關係的範例
tasks.register("hello") {
doLast {
println("Hello!")
}
}
tasks.register("greet") {
doLast {
println("How are you?")
}
dependsOn("hello")
}
tasks.register("hello") {
doLast {
println('Hello!')
}
}
tasks.register("greet") {
doLast {
println('How are you?')
}
dependsOn("hello")
}
在這種情況下,hello
在 greet
之前印出。輸出為 Hello! How are you?
。
任務執行順序由 Gradle 自動決定,並考慮到顯式和隱式任務依賴關係。如果任務之間沒有依賴關係,Gradle 允許使用者請求特定的執行順序。
步驟 5. 在 IDE 中執行任務
您可以透過在窗格中雙擊該任務,經由 IntelliJ 執行 Gradle 任務。
雙擊 tutorial > app > build > build。

建置完成後,請確認它在 IntelliJ 控制台中成功
BUILD SUCCESSFUL in 966ms
7 actionable tasks: 7 executed
3:18:24 AM: Execution finished 'build'.
步驟 6. 在終端機中執行任務
在您的終端機中執行以下命令
$ ./gradlew build
> Task :app:compileJava > Task :app:processResources > Task :app:classes > Task :app:jar > Task :app:startScripts > Task :app:distTar > Task :app:distZip > Task :app:assemble > Task :app:compileTestJava > Task :app:processTestResources > Task :app:testClasses > Task :app:test > Task :app:check > Task :app:build
build
任務使用原始碼及其依賴關係來建置應用程式。如輸出所示,build
任務編譯、組裝、測試和檢查程式碼。
任務按照執行順序印出。jar
任務是 build
任務的依賴項。
jar
任務建立應用程式的可執行 JAR 檔案。讓我們單獨執行它
$ ./gradlew jar
> Task :app:compileJava > Task :app:processResources > Task :app:classes > Task :app:jar
正如預期的,compileJava
任務是 jar
任務的依賴項,並首先執行。任務完成後,會在您的 tutorial/app/build/libs/
資料夾中建立一個 app.jar
檔案。
調用 run
任務並檢查輸出
$ ./gradlew run
> Task :app:compileJava > Task :app:processResources > Task :app:classes > Task :app:run Hello World! BUILD SUCCESSFUL in 325ms
run
任務執行 tutorial/app/src/main/java/com.gradle.tutorial/App.java
中的程式碼。App.java
中的 Java 程式碼只是在螢幕上印出 "Hello World"
public class App {
public String getGreeting() {
return "Hello World!";
}
public static void main(String[] args) {
System.out.println(new App().getGreeting());
}
}
下一步: 依賴管理 >>