教程 > Gradle > Gradle 教程 阅读:55

Gradle Java 应用程序

我们可以使用 Gradle 的 Build Init 插件来创建一个跟踪 Gradle 约定的新 Java 应用程序。 构建插件提供了一个名为 init 的任务,用于生成项目。 该插件还使用包装器任务来创建 Gradle 包装器脚本 (gradlew)。

第一步是为新项目创建一个目录并进入该目录

$ mkdir java_application  
$ cd java_application

然后运行 init 命令创建一个新的 Gradle 项目:

$ gradle init

选择要生成的项目类型。 有四个可用的命令行选项,如下所示:

  1. basic
  2. application
  3. library
  4. Gradle plugin

输入 2 并按回车键创建应用程序。 默认选择是 basic 的。

接下来选择实现语言。 有五个选项可用,如下所示:

  1. C++
  2. Groovy
  3. Java
  4. Kotlin
  5. Swift

我们选择 3 Java。默认选择也是 Java。

下一步是为项目选择默认的构建脚本语言。 有两个选项可用,如下所示:

  1. Groovy
  2. Kotlin

我们选择 1 Groovy。默认选择也是 Groovy。

选择测试框架。 测试框架有四个选项可用。 如下:

  1. JUnit 4
  2. TestNG
  3. Spock
  4. JUnit Jupiter

选择适合自己的测试框架,默认选择是 JUnit 4

输入项目名称; 默认情况下,它将目录名称作为项目名称。

输入源码包; 默认情况下,它将目录名称作为源包。

现在 init 任务已成功执行,我们已经使用 Gradle Init API 创建了一个 Java 应用程序。

gradle java 应用程序创建

init 任务本身包含 wrapper 任务,因此首先它会执行在我们的仓库中生成 gradlewgradlew.bat 文件(Wrapper 脚本)的 wrapper 任务。 它创建一个具有以下结构的 Gradle 项目:

gradle java 应用程序目录结构

上述结构描述:

  1. 包含包装文件的生成包装包。
  2. 默认 Java 源文件夹
  3. 默认 Java 测试文件夹

生成的文件

让我们看一下项目的生成文件。

  • settings.gradle

它有大量的注释并且有一个用来设置根项目的名称的代码行。

rootProject.name = 'java_application'  

它将使用在可用目录之后命名项目的默认行为。 看起来像下面这样

gradle java 应用程序gradlew初始内容

  • 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  

gradle java 应用程序构建

构建任务编译类、运行测试并创建测试报告。

注意 :我们第一次运行 gradlew 命令时,可能需要一些时间,而指定版本的 gradle 是下载并存储在本地的。

Gradle 包装器脚本检查我们是否指定了 Guava 和 JUnit 库,如果没有,它将下载并存储在 /.gradle 目录中。


运行 Java 应用程序

gradle 构建使用应用程序插件,因此我们可以从命令行运行应用程序。 gradlew run 命令将用于从命令行运行应用程序。

首先,使用 task 命令显示插件添加的任务:

$ gradlew tasks  

上面的命令将列出项目中可用的任务。输出如下所示:

gradle java 应用程序运行

现在,使用 run 命令运行应用程序。 它将传达 Gradle 以执行分配给 mainClassName 属性的类中的 main 方法。

$ gradlew run  

运行结果如下

gradle java 应用程序运行结果

查看笔记

扫码一下
查看教程更方便