怎么更好的使用Gradle?
Gradle構(gòu)建工具
Gradle和Maven是兩種流行的Java構(gòu)建工具,它們都用于自動(dòng)化項(xiàng)目的構(gòu)建、測(cè)試和部署。在這篇技術(shù)博客中,我們將介紹Gradle和Maven的基本概念、特點(diǎn)以及如何使用它們來(lái)管理Java項(xiàng)目。
簡(jiǎn)介
- Gradle是一個(gè)基于A(yíng)pache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化構(gòu)建工具。它使用一種基于Groovy的特定領(lǐng)域語(yǔ)言(DSL)來(lái)描述項(xiàng)目的構(gòu)建邏輯。Gradle具有高度的可擴(kuò)展性,可以支持多種編程語(yǔ)言和平臺(tái)。
 - Maven是一個(gè)項(xiàng)目管理工具,主要用于Java項(xiàng)目。它使用一個(gè)名為pom.xml的文件來(lái)描述項(xiàng)目的依賴(lài)關(guān)系、構(gòu)建過(guò)程和項(xiàng)目信息。Maven遵循“約定優(yōu)于配置”的原則,使得項(xiàng)目結(jié)構(gòu)和構(gòu)建過(guò)程更加規(guī)范和統(tǒng)一。
 
與Maven對(duì)比
- Gradle
 
高度可擴(kuò)展:可以通過(guò)插件和自定義任務(wù)來(lái)擴(kuò)展Gradle的功能。
靈活的API:提供了豐富的API,可以方便地與其他工具集成。
高性能:使用增量編譯和并行執(zhí)行任務(wù),提高了構(gòu)建速度。
強(qiáng)大的依賴(lài)管理:支持本地緩存、遠(yuǎn)程倉(cāng)庫(kù)和第三方依賴(lài)。
- Maven
 規(guī)范的項(xiàng)目結(jié)構(gòu):遵循“約定優(yōu)于配置”的原則,使得項(xiàng)目結(jié)構(gòu)更加清晰。
統(tǒng)一的構(gòu)建過(guò)程:通過(guò)生命周期和插件來(lái)實(shí)現(xiàn)統(tǒng)一的構(gòu)建過(guò)程。
依賴(lài)管理:自動(dòng)處理項(xiàng)目依賴(lài)關(guān)系,簡(jiǎn)化了依賴(lài)管理。
社區(qū)支持:擁有龐大的社區(qū)支持和豐富的插件資源。
本地配置Gradle環(huán)境
- 下載gradle 使用國(guó)內(nèi)鏡像,比如騰訊云 https://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip
 - 配置gradle環(huán)境變量到PATH
 - 修改idea配置
 
File -> Settings -> Build,Execution,Deployment -> Gradle -> Use Gradle from (Specified location)
- 修改為阿里云倉(cāng)庫(kù)下載
 
在Gradle安裝目錄下,比如我的為D:\devtools\gradle-8.6\init.d,添加文件init.gradle,內(nèi)容如下:
allprojects {
 repositories {
  mavenLocal() 
        maven { name "aliyunmaven" ;url "https://maven.aliyun.com/nexus/content/groups/public/" }
  maven { name "Batek" ;url "https://nexus.bsdn.org/content/groups/public/" }
  mavenCentral()
    }
 
 buildscript {
  repositories {
   maven { name "aliyunmaven" ;url "https://maven.aliyun.com/nexus/content/groups/public/" }
   maven { name "Batek" ;url "https://nexus.bsdn.org/content/groups/public/" }
   maven { name "M2" ; url "https://plugins.gradle.org/m2/" }
  }
 }
}- 共用maven本地倉(cāng)庫(kù)
 
本地添加環(huán)境變量GRADLE_USER_HOME,并將其值配置為你本地maven倉(cāng)庫(kù)路徑,比如我的:
GRADLE_USER_HOME=D:\mavenRepository使用Gradle
要使用Gradle構(gòu)建Java項(xiàng)目,首先需要?jiǎng)?chuàng)建一個(gè)build.gradle文件,然后在其中定義項(xiàng)目的配置和依賴(lài)關(guān)系。以下是一個(gè)簡(jiǎn)單的build.gradle示例:
apply plugin: 'java'
repositories {
    mavenCentral()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}要構(gòu)建項(xiàng)目,只需在命令行中運(yùn)行g(shù)radle build命令。
使用gradle-wrapper
gradle-wrapper 是 Gradle 構(gòu)建工具中的一個(gè)組件,用于簡(jiǎn)化 Gradle 在不同環(huán)境中的一致性和安裝過(guò)程。它提供了一個(gè)名為 gradlew(在 Windows 上是 gradlew.bat)的包裝器腳本,允許用戶(hù)在沒(méi)有預(yù)先安裝 Gradle 的情況下執(zhí)行 Gradle 命令。
當(dāng)你在項(xiàng)目中使用 gradle-wrapper 時(shí),它會(huì)做以下幾件事情:
- 生成 Wrapper 文件:gradle-wrapper 會(huì)創(chuàng)建一個(gè) gradle/wrapper 目錄,其中包含一個(gè) gradle-wrapper.properties 文件和一個(gè) gradlew 或 gradlew.bat 文件。
 - 管理 Gradle 版本:gradle-wrapper.properties 文件定義了當(dāng)前項(xiàng)目使用的 Gradle 分布式版本。這個(gè)版本號(hào)告訴 gradlew 腳本應(yīng)該下載哪個(gè)版本的 Gradle 分布包。
 - 提供獨(dú)立運(yùn)行能力:通過(guò) gradlew 或 gradlew.bat 腳本,你可以運(yùn)行 Gradle 命令而不需要全局安裝 Gradle。這對(duì)于持續(xù)集成環(huán)境或新團(tuán)隊(duì)成員來(lái)說(shuō)尤其有用,因?yàn)樗苊饬伺渲铆h(huán)境變量或手動(dòng)安裝 Gradle 的需要。
 - 跨平臺(tái)兼容性:由于 gradlew 是一個(gè) shell 腳本(在 Windows 上是批處理文件),它確保了在不同的操作系統(tǒng)平臺(tái)上都能以相同的方式運(yùn)行 Gradle 命令。
 
要使用 gradle-wrapper,你需要在項(xiàng)目的根目錄下運(yùn)行以下命令:
gradle wrapper這個(gè)命令會(huì)做以下幾件事:
- 如果 gradle/wrapper 目錄不存在,它將創(chuàng)建該目錄。
 - 如果 gradle-wrapper.properties 文件不存在或者 Gradle 版本沒(méi)有指定,它將提示你輸入所需的 Gradle 版本。
 - 如果 gradlew 或 gradlew.bat 文件不存在,它將生成這些文件。
 
一旦設(shè)置完成,你可以通過(guò)運(yùn)行 gradlew.bat來(lái)執(zhí)行 Gradle 任務(wù),而無(wú)需全局安裝 Gradle。
例如,要構(gòu)建項(xiàng)目,你可以運(yùn)行:
gradlew.bat build如果基于idea創(chuàng)建基于gradle構(gòu)建的項(xiàng)目時(shí),會(huì)自動(dòng)創(chuàng)建以上文件,而不需通過(guò)額外執(zhí)行g(shù)radle命令
使用時(shí)需要注意:
- 修改gradle下載源
 
修改gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip- 切換依賴(lài)下載地址為國(guó)內(nèi)倉(cāng)庫(kù)
 
如果需要切換阿里鏡像倉(cāng)庫(kù),則將上面的init.gradle中 repositories 中的內(nèi)容復(fù)制到項(xiàng)目build.gradle中即可。
總結(jié)
Gradle和Maven都是優(yōu)秀的Java構(gòu)建工具,它們各自具有不同的特點(diǎn)和優(yōu)勢(shì)。在實(shí)際項(xiàng)目中,可以根據(jù)項(xiàng)目需求和團(tuán)隊(duì)習(xí)慣來(lái)選擇合適的構(gòu)建工具。無(wú)論選擇哪種工具,都能有效地提高項(xiàng)目的構(gòu)建效率和管理便捷性。















 
 
 






 
 
 
 