Gradle Java 应用程序
我们可以使用 Gradle 的 Build Init
插件来创建一个跟踪 Gradle 约定的新 Java 应用程序。 构建插件提供了一个名为 init 的任务,用于生成项目。 该插件还使用包装器任务来创建 Gradle 包装器脚本 (gradlew)。
第一步是为新项目创建一个目录并进入该目录
$ mkdir java_application
$ cd java_application
然后运行 init
命令创建一个新的 Gradle 项目:
$ gradle init
选择要生成的项目类型。 有四个可用的命令行选项,如下所示:
- basic
- application
- library
- Gradle plugin
输入 2 并按回车键创建应用程序。 默认选择是 basic 的。
接下来选择实现语言。 有五个选项可用,如下所示:
- C++
- Groovy
- Java
- Kotlin
- Swift
我们选择 3 Java。默认选择也是 Java。
下一步是为项目选择默认的构建脚本语言。 有两个选项可用,如下所示:
- Groovy
- Kotlin
我们选择 1 Groovy。默认选择也是 Groovy。
选择测试框架。 测试框架有四个选项可用。 如下:
- JUnit 4
- TestNG
- Spock
- JUnit Jupiter
选择适合自己的测试框架,默认选择是 JUnit 4。
输入项目名称; 默认情况下,它将目录名称作为项目名称。
输入源码包; 默认情况下,它将目录名称作为源包。
现在 init 任务已成功执行,我们已经使用 Gradle Init API 创建了一个 Java 应用程序。
init 任务本身包含 wrapper 任务,因此首先它会执行在我们的仓库中生成 gradlew 和 gradlew.bat 文件(Wrapper 脚本)的 wrapper 任务。 它创建一个具有以下结构的 Gradle 项目:
上述结构描述:
- 包含包装文件的生成包装包。
- 默认 Java 源文件夹
- 默认 Java 测试文件夹
生成的文件
让我们看一下项目的生成文件。
- settings.gradle
它有大量的注释并且有一个用来设置根项目的名称的代码行。
rootProject.name = 'java_application'
它将使用在可用目录之后命名项目的默认行为。 看起来像下面这样
- app/build.gradle
它是 Gradle 项目的构建脚本。 生成的 build.gradle
文件有很多组件。 此构建脚本中介绍了使用的依赖项及其版本。 生成的构建文件内容如下:
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit test framework.
testImplementation 'junit:junit:4.13.2'
// This dependency is used by the application.
implementation 'com.google.guava:guava:31.0.1-jre'
}
application {
// Define the main class for the application.
mainClass = 'java_application.App'
}
Gradle 构建脚本添加了 Java 和应用程序插件。 当我们运行一个 gradle 命令时,它会在 Gradle 的构建脚本中进行搜索。
- App.java
Gradle 支持 Java 项目并包含一个具有 main
方法的类,可以从命令行执行。 在 Java_Application 中,主类的名称是 App
。
文件 App.java 位于目录 app/src/main/java/java_application/
中。 App.java 生成的代码如下:
package java_application;
public class App {
public String getGreeting() {
return "Hello World!";
}
public static void main(String[] args) {
System.out.println(new App().getGreeting());
}
}
上面的 Java 源文件是由 init
任务生成的。
- AppTest.java
它是Java项目的测试类。 测试类在目录 app/src/test/java/java_application/
中。 AppTest.java 生成的代码如下:
package java_application;
import org.junit.Test;
import static org.junit.Assert.*;
public class AppTest {
@Test public void appHasAGreeting() {
App classUnderTest = new App();
assertNotNull("app should have a greeting", classUnderTest.getGreeting());
}
}
init
任务生成给定的 Java 测试文件。 生成的测试文件包含一个使用 JUnit
的 @test
注解的测试。 此测试实例化 App 类,调用 getGreeting()
,并检查返回值是否不为空。
构建的执行
要执行 gradle 构建,请与 gradlew
命令一起运行构建任务。 但是,我们可以运行 gradle 任务,但最好包含包装脚本。
$ gradlew build
构建任务编译类、运行测试并创建测试报告。
注意
:我们第一次运行 gradlew 命令时,可能需要一些时间,而指定版本的 gradle 是下载并存储在本地的。
Gradle 包装器脚本检查我们是否指定了 Guava 和 JUnit 库,如果没有,它将下载并存储在 /.gradle
目录中。
运行 Java 应用程序
gradle 构建使用应用程序插件,因此我们可以从命令行运行应用程序。 gradlew run
命令将用于从命令行运行应用程序。
首先,使用 task
命令显示插件添加的任务:
$ gradlew tasks
上面的命令将列出项目中可用的任务。输出如下所示:
现在,使用 run
命令运行应用程序。 它将传达 Gradle 以执行分配给 mainClassName 属性的类中的 main
方法。
$ gradlew run
运行结果如下