Gradle 15分鐘入門教學


1-Gradle入門介紹

在閱讀或實踐本文中的範例前,必須首先確保已將Gradle外掛安裝到Eclipse中。如果沒有,可以點選下面的連結檢視Gradle安裝說明:

本教學的目標:

這是專案完成後的程式碼結構圖:

2-建立Gradle專案

開啟 Eclipse,單擊並選擇選單 File->New->Other 並選擇 Gradle Project 如下圖所示 -

點選下一步(Next)顯示整合的一些說明,如下 -

點選下一步(Next),並填入要建立的專案的名稱 HelloGradle 並點選完成(Finish),如下 -

在第一次執行時,Eclipse將下載Gradle相關軟體或要求指定本機安裝 Gradle 的路徑。請參考Eclipse+Gradle整合教學。

預設情況下,Gradle軟體將通過Eclipse下載到 C:/Users/{username}/.gradle。不過可以組態更改到其它位置,此組態在本指南的最後一個附錄中有說明。

Gradle將自動建立專案所需要的檔案結構。其結構類似於Maven專案。

注意,這是一個 gradle 專案定義的專案結構,怎麼樣,是不是有點熟悉?

  • src/main/java - 檔案夾包含所有java原始檔。
  • src/test/java - 檔案夾包含所有java測試用例。
  • build.gradle - 檔案包含專案構建所使用的指令碼。
  • settings.gradle - 檔案將包含必要的一些設定,例如,任務或專案之間的依懶關係等。

3- 組態Gradle

build.gradle檔案是組態專案中要使用的庫的檔案。它和Maven工程中的pom.xml相同。
開啟build.gradle檔案組態將要使用的庫,預設生成的程式碼內容如下:

/*
 * This build file was auto generated by running the Gradle 'init' task
 * by 'Administrator' at '16-10-30 下午4:20' with Gradle 3.1
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/3.1/userguide/tutorial_java_projects.html
 */

// Apply the java plugin to add support for Java
apply plugin: 'java'

// In this section you declare where to find the dependencies of your project
repositories {
    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

// In this section you declare the dependencies for your production and test code
dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.21'

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile 'junit:junit:4.12'
}

向上面的原始碼檔案中新增以下程式碼 -

// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3

compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'

新增後如下 -

注意:如果build.gradle檔案更新,Eclipse目前不會自動更新類路徑。要在專案上或在build.gradle檔案中點選右鍵選擇 Gradle/Refresh Gradle 來更新專案。

如果將新的庫新增到 build.gradle 中宣告,Gradle 將會把它們下載到本地計算機上。

接下來,建立一些 Java 類來測試使用下載的類庫,這裡建立一個簡單的 CheckNumeric.java 類,如下所示 -

CheckNumeric.java 類的程式碼如下所示 -

package com.yiibai.hellogradle;

import org.apache.commons.lang3.StringUtils;

public class CheckNumeric {

    public static void main(String[] args) {
        String text1 = "a12340";
        String text2 = "1234";

        boolean result1 = StringUtils.isNumeric(text1);
        boolean result2 = StringUtils.isNumeric(text2);

        System.out.println(text1 + " is a numeric? " + result1);
        System.out.println(text2 + " is a numeric? " + result2);

    }

}

執行 CheckNumeric 類應該會得到以下結果:

可以在專案中清楚地看到使用的庫,它在硬碟上的位置如下圖所示 -

4-解釋Gradle的操作原理

上面的步驟中我們已經建立了專案,並且成功地執行了。該專案使用的StringUtils類,它是一個Apache類,而不是在JDK的標準庫中的類。傳統上做法,必須將這個類庫複製到專案並宣告類路徑。但是,這裡並不需要像傳統方式那樣複製和宣告類路徑。這些類庫可以讓Gradle來管理。 現在來看看Gradle是如何工作的,如下圖中所示 -

上圖顯示了Gradle工作的整個過程,下面我們一步步來說明。

  • build.gradle中宣告了該專案依賴於common-lang3庫版本3.0
  • 當使用Gradle工具重新整理專案時,Gradle將檢查指定的依賴庫是否在計算機上有本地儲存庫。 如果沒有,Gradle將從網際網路的儲存庫中下載到本地。
  • 最後,Gradle將自動宣告Classpath

所以只需要在build.gradle檔案中宣告所有想要使用的庫,這些庫由Gradle自己管理。

5-檢視本地儲存庫

你會不會有這樣的一個問題:本地儲存庫在我電腦的什麼位置?如果是按上面所有套路來建立工程,那麼看下圖就知道了 -

而上面組態中使用到的 commons-lang3 庫的路徑在 C:/Users/Administrator/.gradle/caches/modules-2/files-2.1/org.apache.commons,如下圖所示 -

6- Gradle位置組態

預設情況下,Gradle軟體將通過 Eclipse 下載到C:/Users/{username}/.gradle目錄中。但是可以將組態更改其位置。例如想要把這個下載目錄修改為 D:/worksp/gradle/Downloads,那麼可以按照以下操作來組態。

在 Eclipse 選單中,開啟 Window -> References 選擇目錄 D:/worksp/gradle/Downloads,如下圖所示 -

右鍵單擊專案,然後選擇 Gradle -> Refresh Gradle ProjectGradle將重新下載到剛剛設定的新檔案夾。如下圖所示 -

7-在網路檢視Gradle儲存庫

問題:在哪裡查詢資訊groupId,artifactId和版本呢?
可以去網站: http://mvnrepository.com ,例如在我們上面範例使用的 common-lang3 ,可在網站中搜尋找到開啟URL:http://mvnrepository.com/artifact/org.apache.commons/commons-lang3
如下圖中所示 -

可根據你想要的一個版本,找到 gradle 的相關資訊,如下所示 -