第 2 部分:运行 Gradle 任务
通过运行一个 Gradle 任务并查看其输出来学习 Gradle 任务的基础知识。
步骤 0. 开始之前
-
您在第 1 部分中初始化了您的 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 。 |
在本教程的第 1 部分中,我们使用 ./gradlew build
命令运行了 build
任务。
步骤 2. 理解任务
我们已经列出了项目初始化时可用的任务,但是如果我们想创建自己的任务怎么办?
Gradle 提供了许多内置任务,开发人员可以使用它们来增强构建脚本。
此示例任务使用 Copy
内置任务将 *.war
文件从 source
目录复制到 target
目录。
Kotlin
Groovy
tasks.register<Copy>("copyTask") {
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 开始之前完成。
-
一个任务可以显式声明其依赖关系。
-
一个任务可以隐式依赖于其他任务。
这是一个显式任务依赖关系的示例
Kotlin
Groovy
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());
}
}
下一步: 依赖管理 >>