在IDEA裡gradle配置和使用

陳袁發表於2018-06-13

在IDEA裡gradle配置和使用

前言

有人說Gradle使用groovy語言編寫,簡單,明瞭沒像maven使用xml臃腫,其實我倒不覺得,我覺得maven挺好的,管理jar依賴和專案生命週期挺方便的,我使用gradle只是因為公司用,不然我估計不會學習gradle。下面是gradle的優點,自己斟酌吧。
1. 按約定宣告構建和建設;
2. 強大的支援多工程的構建;
3. 強大的依賴管理(基於Apache Ivy),提供最大的便利去構建工程;
4. 全力支援已有的 Maven 或者Ivy倉庫基礎建設;
5. 支援傳遞性依賴管理,在不需要遠端倉庫和pom.xml和ivy配置檔案的前提下;
6. 基於groovy指令碼構建,其build指令碼使用groovy語言編寫;
7. 具有廣泛的領域模型支援構建;
8. 深度 API;
9. 易遷移;
10. 自由和開放原始碼,Gradle是一個開源專案,基於 ASL 許可。


Windows環境IDEA配置gradle

配置系統環境變數

為了使用gradle命令,idea裡使用不了命令。比如編譯命令gradle build

下載

gradle安裝包下載地址,解壓到“D:\soft\gradle\gradle-4.8

配置環境變數

開啟環境配置,新建系統環境“GRADLE_HOME”,值為D:\soft\gradle\gradle-4.8,找到path變數,後面新增%GRADLE_HOME%\bin;

測試

在cmd命令裡輸入gradle -v如果能打出版本號,說明環境配置完畢。

idea配置

在D盤新建檔案.gradle(使用dos命令mkdir .gradle ),做為gradle下載的jar包倉庫主目錄,預設在C:\Users\Administrator\.gradle.
開啟file->setting->Build,Execution,Deployment->Gradle,修改如下:
這裡寫圖片描述
Gradle home指定了gradle檔案目錄
Service directory path指定了gradle工作主目錄


gradle倉庫設定

建議如下設定

repositories {
    mavenLocal()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
    mavenCentral()
    jcenter()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
    maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }  //轉換pdf使用
}

儲存庫只是檔案的集合,按分組,名稱和版本來組織構造。 預設情況下,Gradle不定義任何儲存庫。 這裡使用repositories 指定儲存庫。
mavenLocal():指定使用maven本地倉庫,而本地倉庫在配置maven時setting檔案指定的倉庫位置。如<localRepository>D:/repository</localRepository>,同時將setting檔案拷貝到C:\Users\Administrator\.m2目錄下,一般該目錄下是沒有setting檔案的,gradle查詢jar包順序如下:gradle預設會按以下順序去查詢本地的倉庫:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository。
maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}:指定阿里雲映象加速地址
mavenCentral():這是Maven的中央倉庫,無需配置,直接宣告就可以使用
jcenter():JCenter中央倉庫,實際也是是用的maven搭建的,但相比Maven倉庫更友好,通過CDN分發,並且支援https訪問。
後面的maven { url 地址},指定maven倉庫,一般用私有倉庫地址或其它的第三方庫
gradle按配置順序尋找jar檔案。如果本地存在就不會再去下載。不存在的再去maven倉庫下載,這裡注意下載下來的jar檔案不在maven倉庫裡,而是在gradle的主工作目錄下,如上面的D:\.gradle目錄
參考《Gradle實戰》如何配置利用Maven本地倉庫


構建命令

清理命令

gradle clean

構建打包命令

gradle clean build

編譯時跳過測試,使用-x,-x引數用來排除不需要執行的任務

gradle clean build -x test

建立快取依賴

執行命令gradle clean build --refresh-dependencies或刪除.gradle/caches目錄,構建的時候它會下載所有依賴並加入到快取中。


阿里雲映象

buildscript {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
    }

參考gradle配置國內映象

gradle.build構建指令碼

build.gradle是Gradle預設的構建指令碼檔案,執行Gradle命令的時候,會預設載入當前目錄下的build.gradle指令碼檔案。
gradle.build指令碼如下:

buildScript {
    repositories {
         mavenCentral()
    }
}

repositories {
     mavenCentral()
}

buildScript裡的repositories是這個指令碼需要的依賴庫,與專案無關,在執行指令碼時,會從這個庫裡download對應的jar和外掛。第二個repositories是專案裡需要依賴的jar的庫。


檢視專案已定義的所有task以及含義

命令

gradle tasks

比如結果如下

  • assemble: 編譯
  • build:編譯並執行測試
  • clean:刪除build目錄
  • jar: 生成jar包
  • test:執行單元測試

maven專案轉換為gradle專案

根目錄執行

gradle init --type pom

上面的命令會根據pom檔案自動生成gradle專案所需的檔案和配置,然後以gradle專案重新匯入即可。


settings.gradle配置

是模組Module配置檔案,大多數setting.gradle的作用是為了配置子工程,根目錄下的settings.gradle指令碼檔案是針對module的全域性配置,它的作用域所包含的所有module是通過settings.gradle來配置。
settings.gradle用於建立多Project的Gradle專案。Project在IDEA裡對應Module模組。
例如配置module名rootProject.name = 'DyoonPLM'

參考Gradle 入門–只此一篇
參考你真的瞭解 Gradle 嗎?

相關文章