1. 程式人生 > >使用Gradle快速構建專案

使用Gradle快速構建專案

黃少存,叩丁狼高階講師,本文為原創文章,轉載請註明出處。 

到這裡,相信大家都已經知道 Gradle 就是一個構建工具,其主要的目的就是幫咱們構建專案,以下我就通過一個普通的 Java 專案和普通的 web 專案的構建帶你走入 Gradle 專案構建.

1 Gradle 搭建Java專案

使用構建工具搭建 Java 專案的主要目的就是其自動的打包和依賴功能.以下就來看下如何使用 Gradle 搭建 Java 專案

1.1 專案建立

IDEA 自帶 Gradle 和 Groovy 外掛,所以可以直接建立 Gradle 專案.如果是 eclipse 需要安裝對應的外掛.

IDEA 建立 Gradle Java 專案

  1. file -> new project -> Gradle -> 勾選 Java
  2. 輸入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 選擇Gradle home
  4. 在 src/main/java下建立包 cn.wolfcode和建立 App.java 類
  5. 在 App 中列印 hello gradle,測試

Java 專案搭建.gif

以上操作咱們就已經使用 Gradle 搭建好了 Java 專案,專案中自動生成了目錄和 build.gradle,settings.gradle,接下來咱們就來看下build.gradle

1.2 build.gradle 和專案目錄

// plugins 方法,傳入閉包{} 作為引數
plugins {
    id 'java'
}
group 'cn.wolfcode.gradle'    // group 方法
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8    // 變數
// repositories  方法,傳入閉包
repositories {
    mavenCentral()
}
// dependencies 方法,傳入閉包
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

建立完專案之後會自動生成 build.gralde , 裡面配置了構建專案的基本指令碼.
此指令碼用的就是 Groovy 語言書寫的,從指令碼上看可得知,除了sourceCompatibility 是變數,其他的都是方法呼叫.
plugins,repositories ,dependencies 傳入的是閉包.至於每一項配置是什麼意思,期待後面的構建指令碼介紹.

從創建出來的專案上咱們可以看到自動生成了一些目錄,這些目錄結構跟 Maven 構建是相同的.結構如下:
image.png

構建工具構建的Java專案主要目的是可以打包.接下來咱們就來看下如何使用 Gradle 給專案打包

1.3 Gradle 打包 Java 專案

操作非常簡單,在 IDEA 右邊有一 Gradle ,展開找到 Tasks 任務,展開 Tasks下的 build 直接點選 jar 就可以打包.

image.png

當點選了 jar 之後就會自動打包到專案下的build/libs下,如圖
image.png

以上使用 Gradle 構建普通的 Java 專案就已經完成了,接下來咱們就來看下如何使用 Gradle 構建普通的 web 專案

2 Gradle 構建 web 專案

使用 Gradle 構建 web 專案和 構建 Java 專案類似,只在第一步位置勾選 web 即可.

2.1 建立 web 專案

  1. file -> new project -> Gradle -> 勾選 Web
  2. 輸入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 選擇Gradle home

具體操作如下

web專案搭建.gif

以上操作咱們就已經使用 Gradle 搭建好了 Java 專案,專案中自動生成了目錄和 build.gradle,settings.gradle,接下來咱們就來看下build.gradle

2.2 build.gradle 和專案目錄

plugins {
    id 'java'
    id 'war'   //比普通的 java 專案多出了一個 war 外掛的引入
}

group 'cn.wolfcode.gradle'  
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

以上咱們可以看出,web專案只是在build.gradle 中多引入了war 外掛而已.
目錄由工具自動生成,如果是手動將 Java 專案改為 web 專案需要自己手動建立目錄或者自己書寫生成目錄的外掛.自動生成目錄如下.
image.png

以上使用 Gradle 專案咱們就已經構建好了一個簡單的 web 專案.而作為一個強大的構建工具,不僅僅是約束了專案結構那麼簡單,其實還可以打成 war 包和引入外掛,這裡作為一個簡單的 web 專案,咱們就先來打個 war 包吧.

2.2 web 專案打包為 war 包

操作非常簡單,在 IDEA 右邊有一 Gradle ,展開找到 Tasks 任務,展開 Tasks下的 build 直接點選 war 就可以打包.
image.png

當點選了 war 之後就會自動打包到專案下的build/libs下,如圖
image.png

以上使用 Gradle 構建普通的 web 專案就已經完成了.

FS : 你這個騙子! 我的 IDEA 不會自動生成目錄,還有錯誤!!!
ME : 是你太快了,有時太快也是不好滴...
ME : 如果用的是 2016 版,在建立專案時勾選自動建立目錄,如下
口 Create directories fo empty content roots automatically

FS : 已經建立了,不想刪除再重新建立咋辦?
ME : 那就手動建立目錄唄 !!! (●>∀<●)ノ♥

ME : 建立完了嗎? 完了告訴你,其實還可以自動生成目錄. (●’◡’●)ノ♥
ME : 是不是一下子把目錄都給記住了. 哈... 哈... 哈...

3 自定義目錄生成任務

def createDir(fileName){
    File f = new File(fileName);
    f.mkdirs()
}

task createJavaProjectDir << {
    def dirList = ['src/main/java','src/main/resources','src/test/java','src/test/resources']
    dirList.each {fileName ->
        createDir(fileName)
    }
}

task createWebProjectDir (dependsOn: createJavaProjectDir) << {
    def fileName = 'src/main/webapp'
    createDir(fileName)
}

重新整理 Task 列表在other下直接雙擊 createWebProjectDir 即可生成目錄。當然這些可能看不懂,先不管,生成了再說,詳情請看任務篇。