Gradle快速安裝及入門
1、什么是Gradle
Gradle是一種結(jié)合了Ant和Maven兩者優(yōu)勢的下一代構(gòu)建工具,既有Ant構(gòu)建靈活性的優(yōu)點(diǎn),也保留Maven約定優(yōu)于配置的思想,在靈活構(gòu)建和約定構(gòu)建之間達(dá)到了很好的平衡。
2、安裝Gradle
(1)Gradle屬于解壓配置即可使用的軟件
下載解壓gradle-4.1-all.zip,例如解壓到:D:/ gradle-4.1
(2)window中設(shè)置gradle環(huán)境變量:
- GRADLE_HOME D:/ gradle-4.1
- path D:/ gradle-4.1/bin(或者:%GRADLE_HOME%\bin)
(3)開始->運(yùn)行->cmd,輸入如下命令:gradle -v
3、Gradle構(gòu)建腳本
每一gradle構(gòu)建腳本都包含三個(gè)基本構(gòu)建塊:project、task和property。每一個(gè)構(gòu)建中至少包含一個(gè)project,進(jìn)而包含一個(gè)或多個(gè)task(project和task可以分別理解為Ant構(gòu)建工具中的<project>和<target>標(biāo)簽)。project和task暴露的屬性可以用來控制構(gòu)建,project本身自帶很多task并且和通過引入新的插件來引入新的task,task中包含各種構(gòu)建方法來執(zhí)行項(xiàng)目構(gòu)建,例如:clean、build等常見的構(gòu)建方法。
(1)、創(chuàng)建一個(gè)空白的build.gradle構(gòu)建腳本
項(xiàng)目目錄結(jié)構(gòu)(假如其中demo為D:\demo):
- demo
- |--build.gradle(D:\demo\build.gradle)
執(zhí)行如下命令:
D:\demo>gradle tasks
執(zhí)行結(jié)果輸出:
(2)、創(chuàng)建一個(gè)包含有java plugin的構(gòu)建腳本
項(xiàng)目目錄結(jié)構(gòu)(假如其中demo為D:\demo):
- demo
- |--build.gradle(D:\demo\build.gradle)
build.gradle 構(gòu)建腳本內(nèi)容:
apply plugin: 'java'
執(zhí)行如下命令:
D:\demo>gradle tasks
執(zhí)行結(jié)果輸出(部分):
總結(jié):對比上面兩 個(gè)構(gòu)建腳本gradle tasks 命令輸出的結(jié)果,加了apply plugin: 'java' 插件的構(gòu)建腳本要多出了 Build tasks 等任務(wù),從第二個(gè) Build tasks 任務(wù)中能夠看到,gradle 構(gòu)建的常用命令 build、clean等,由此可以知道通過引入插件,就可以增加相應(yīng)的構(gòu)建功能。
4、Gradle案例實(shí)戰(zhàn)
(1)、基于約定由于配置構(gòu)建項(xiàng)目
基于約定的項(xiàng)目目錄結(jié)構(gòu)圖(和maven默認(rèn)目錄結(jié)構(gòu)一致):
Gradle采用了Maven約定優(yōu)于配置的思想,只要按照一定的項(xiàng)目目錄結(jié)構(gòu),構(gòu)建插件將能都自動(dòng)找到需要構(gòu)建的文件進(jìn)行項(xiàng)目構(gòu)建,構(gòu)建如此的簡單。下面是一個(gè)標(biāo)準(zhǔn)的項(xiàng)目目錄結(jié)構(gòu)
項(xiàng)目目錄結(jié)構(gòu)(假如其中demo為D:\demo):
- demo
- |--src
- |----main
- |------java
- |--------com
- |-----------hello
- |--------------Hello.java(D:\demo\src\main\java\com\hello\Hello.java)
- |------resources
- |----test
- |------java
- |------resources
- |--build.gradle(D:\demo\build.gradle)
Hello.java 內(nèi)容(只是一個(gè)簡單的java類,自己可以任意寫)
public class Hello{ public static void main(String[] args){ System.out.println("hello ant"); } }
build.gradle 內(nèi)容(只需要引入java 插件)
apply plugin: 'java'
進(jìn)入D:\demo目錄在命令行執(zhí)行 gradle clean build 命令后的目錄結(jié)構(gòu):
生成了標(biāo)準(zhǔn)的build輸出目錄
- demo
- |--build
- |----classes
- |------java
- |--------main
- |----------com
- |------------hello
- |---------------Hello.class(D:\demo\build\classes\java\main\com\hello\Hello.class)
- |----libs
- |-------Hello.jar(D:\demo\build\libs\Hello.jar)
- |--src
- |----main
- |------java
- |--------com
- |-----------hello
- |--------------Hello.java(D:\demo\src\main\java\com\hello\Hello.java)
- |------resources
- |----test
- |------java
- |------resources
- |--build.gradle(D:\demo\build.gradle)
(2)、靈活定制構(gòu)建項(xiàng)目
當(dāng)構(gòu)建歷史遺留項(xiàng)目,由于項(xiàng)目目錄結(jié)構(gòu)的高度自由,gradle可以通過簡單的配置即可完成項(xiàng)目構(gòu)建
下面是一個(gè)非標(biāo)準(zhǔn)的項(xiàng)目目錄結(jié)構(gòu)(Hello.java并未位于標(biāo)準(zhǔn)的目錄中):
項(xiàng)目目錄結(jié)構(gòu)(假如其中demo為D:\demo):
- demo
- |--src
- |------com
- |---------hello
- |--------------Hello.java(D:\demo\src\com\hello\Hello.java)
- |--build.gradle(D:\demo\build.gradle)
build.gradle 內(nèi)容(只需要簡單的指定源文件目錄和編譯輸出目錄,即可定制構(gòu)建)
apply plugin: 'java' sourceSets{ main{ java { srcDirs = ['src'] //指定了java源文件目錄為src而不是默認(rèn)的src/main/java } } } buildDir = 'out' //指定輸出目錄為out而不是默認(rèn)的build
進(jìn)入D:\demo目錄在命令行執(zhí)行 gradle clean build 命令后的目錄結(jié)構(gòu):
輸出目錄名稱變成了out,但是out中的編譯生成文件目錄等都按照了標(biāo)準(zhǔn)生成
- demo
- |--out
- |----classes
- |------java
- |--------main
- |----------com
- |------------hello
- |---------------Hello.class(D:\demo\out\classes\java\main\com\hello\Hello.class)
- |----libs
- |-------Hello.jar(D:\demo\out\libs\Hello.jar)
- |--src
- |------com
- |---------hello
- |--------------Hello.java(D:\demo\src\com\hello\Hello.java)
- |--build.gradle(D:\demo\build.gradle)
通過上面兩個(gè)簡單的java項(xiàng)目(基于約定由于配置構(gòu)建項(xiàng)目 和 靈活定制構(gòu)建項(xiàng)目)構(gòu)建能夠很明了的提現(xiàn)gradle基于約定構(gòu)建的簡單快速和制定構(gòu)建的靈活
5、Gradle優(yōu)缺點(diǎn)
優(yōu)點(diǎn):基本結(jié)合了以往項(xiàng)目構(gòu)建工具(Ant和Maven)的所有優(yōu)點(diǎn),是構(gòu)建工具的首選
缺點(diǎn):相對較高的理解學(xué)習(xí)成本
6、Gradle的特性
Gradle使用Groovy作為腳本語言的構(gòu)建工具,而Groovy是基于JVM的動(dòng)態(tài)語言,它對Java有著先天的兼容性,你甚至可以在構(gòu)建腳本中編寫Java程序。
Gradle不像Ant和Maven那樣使用xml編寫腳本,它使用的是Groovy,這意味著你在編寫腳本的時(shí)候更像是在寫程序,而不是編寫充滿尖括號又不好閱讀xml文件。
Gradle像Maven一樣遵循約定優(yōu)于配置的原則,也就是說你的項(xiàng)目只要按照標(biāo)準(zhǔn)約定搭建起來,你只需要做簡單的配置就可以構(gòu)建你的項(xiàng)目了。
Gradle支持現(xiàn)有的Maven倉庫,所以你可以很方面地利用Maven上的所有庫。
Gradle支持依賴傳遞,也就是說當(dāng)A庫依賴B庫的時(shí)候,你只需要引用A庫就可以了,Gradle會(huì)自動(dòng)幫你依賴B庫。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Java 線程的優(yōu)先級(setPriority)案例詳解
這篇文章主要介紹了Java 線程的優(yōu)先級(setPriority)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析
這篇文章主要介紹了Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot利用隨機(jī)鹽值實(shí)現(xiàn)密碼的加密與驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何利用隨機(jī)鹽值實(shí)現(xiàn)密碼的加密與驗(yàn)證,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2024-02-02SpringBoot頂層接口實(shí)現(xiàn)類注入項(xiàng)目的方法示例
本文主要介紹了SpringBoot頂層接口實(shí)現(xiàn)類注入項(xiàng)目的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06