天天看點

gradle學習筆記二:使用Gradle建構Java應用程式

前言

首先,我也是一個Gradle小白,目前所了解到的Gradel是個自動化建構工具,可以幫助我們自動管理依賴,編譯、打包程式。至于它的優缺點以及工作流程并不是很熟悉。正是因為如此,才需要系統的學習gradle。個人認為一個技術或者一個架構,如果經常使用它,系統的去學習是最快掌握它的方法。

本篇是根據官網的教程 Building Java Applications整理而來,主要是知道Gradle的一下幾個基本概念

  1. 如何使用Gradel建立一個Java應用程式
  2. 了解内置元件Build Init plugin
  3. 熟悉Gradel建立Java項目的基本結構
  4. 了解Gradel生成的檔案的基本格式

使用Gradle建構Java應用程式

建立項目目錄

mkdir demo-java-application
cd demo-java-application
           

執行init指令

gradle init

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Swift
Enter selection (default: Java) [1..5] 3

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: demo-java-application):
Source package (default: demo.java.application): com.demo.gradle.application

> Task :init
Get more help with your project: https://docs.gradle.org/6.3/userguide/tutorial_java_projects.html

BUILD SUCCESSFUL in 41s
2 actionable tasks: 1 executed, 1 up-to-date
           

這裡對Gradle Init plugin做一個介紹。init 指令是Gradle Init plugin内置的一個指令,用來建立不同類型的Gradle應用程式,比如java,C++,Grovvy等等,還可以将maven建構的程式轉換為gradle建構。同時它還調用了wrapper指令生成了Gradle Wrapper檔案(對于Gradle Wrapper檔案後續了解)。

目錄結構

├── build.gradle
├── gradle    
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   ├── java  
    │   │   └── demo
    │   │       └── App.java
    │   └── resources
    └── test      
        ├── java
        │   └── demo
        │       └── AppTest.java
        └── resources
           

如果知道maven,可以看到和maven的基本格式一緻,隻不過多了一些gradel的配置檔案

檔案格式概覽

settings.gradle
rootProject.name = 'demo-java-application'
           

是一個非常重要的配置,隻是标記了項目名稱,個人了解可能在多子產品項目中起到根目錄的作用,暫時忽略其意義。

build.gradle
plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.2-jre'

    testImplementation 'junit:junit:4.12'
}

application {
    mainClassName = 'com.demo.gradle.application.App'
}
           

這是gradel建構的核心配置檔案,裡面包含了插件配置,倉庫配置,依賴管理還有項目配置等資訊。本篇隻做簡單了解,因為我也不會。如果類比Maven的話,應該是pom.xml

執行建構指令

./gradlew build
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :jar
> Task :startScripts
> Task :distTar
> Task :distZip
> Task :assemble
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test
> Task :check
> Task :build

BUILD SUCCESSFUL
7 actionable tasks: 7 executed
           

建構完成後多了一個build檔案夾

檢視測試報告

gradle會自動執行單測類,并且以htlm的方式給出了測試報告,報告存放在build/reports/tests/test/index.html

gradle學習筆記二:使用Gradle建構Java應用程式

運作程式

gradel自帶了run指令用來執行程式,入口類就是配置中的build.gradle–>application->mainClassName

./gradlew run

> Task :run
Hello world.

BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date
           

總結

這就是使用Gradel建構一個java應用程式的完整流程,當然工作中肯定不會這麼使用。但是實際操作一遍有助于我們了解Gradle的執行流程以及它的基本概念。

是以從這篇文章我們可以了解到

  1. 如何使用Gradle建立Java應用程式
  2. 知道使用Gradle建立的Java應用程式基本的目錄結構和配置檔案
  3. 如何使用Gradle建構Java應用程式和察看測試報告
  4. 使用Gradle執行java應用程式