(簡&繁)Gradle配置文件--簡


標簽: Gradle

Gradle功能很強大,也非常的靈活,但是我學習了很多資料之后發現,對於開發人員來說,很多內容並非我必須要了解的,雖然技多不壓身,但是暫時用不到的知識遺忘速度也是飛快的,還是先解決最主要的問題,用Gradle來代替Maven管理自己的java項目。
使用Gradle管理項目的最主要的是學會Gradle的配置文件編寫,接下來將自己對於Gradle配置文件的理解記錄下來備查。

配置文件分類

配置文件分為三種

  1. build.gradle
    主要配置文件,關於項目的依賴關系主要在該文件中配置
  2. settings.gradle
    項目信息文件,項目的一些可在這里配置,比如項目名稱、子項目信息
  3. xxxxx.gradle
    模塊配置文件,可將冗長的配置信息分塊進行配置,比如依賴的版本統一管理等

配置項類舉

build.gradle

1、 buildscript

作用:gradle的自身的資源配置,比如倉庫信息、依賴信息、插件信息等
Tips:該配置項應放在配置文件的最開頭位置

buildscript {
	repositories {
		maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
		maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
		maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
	}
}

2、 plugins

作用:插件集合配置
Tip:該配置項位置應放在除buildscript配置之外的所有配置項的前面

plugins {
	id 'org.springframework.boot' version '2.1.3.RELEASE'
	id 'java'
}

3、apply

作用:包含配置插件、引用其他配置文件
Tips:該配置項位置應放在除buildscript、plugins配置之外的所有配置項的前面,沒有plugins則保證在buildscript之后

//配置插件
apply plugin: 'io.spring.dependency-management'
//引用配置文件
apply from: 'config.gradle'

4、allprojects

作用:多模塊項目結構中對子模塊的相同配置集中配置,包括repositories、dependencies等

allprojects {
    repositories {
        maven { name "M2" ; url 'https://plugins.gradle.org/m2/'
    }
    
    dependencies {
        compileClasspath 'org.springframework.boot:spring-boot-starter-web'
	    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
}

另外還有subprojects也是配置多模塊項目的關鍵配置,兩者的區別是allprojects是包括rootProject的subprojects是不包括rootProject的,task遍歷順序為allprojects > subprojects > Child Project

5、repositories

作用:配置依賴倉庫信息,常用阿里雲的倉庫,直接復制示例代碼即可

repositories {
	mavenLocal()
	maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
	maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
}

6、dependencies

作用:依賴包的配置
依賴方式:在2.x版本和3.0以后的版本更換了關鍵字
| 2.x | 3.0 OR later | 描述 |
| -------- | ----- | :---- | |
| compile | implementation,api |編譯以及運行時都需要|
| provided | compileOnly、[ compileClasspath ] |僅編譯需要|
| apk | runtimeOnly |僅運行時需要|
| testCompile| testImplementation | 測試編譯時使用 |
Tips:常用的就是implementation、testCompile 和 compileOnly.
網上很多說implemention是隱藏內部引用的作用,但是不必深究,用就可以了,出現問題再來解決,多數情況下是不會遇到問題的

沖突處理:

  • exclude
    作用:排除依賴

   //單獨排除某個模塊中的依賴  
   compile('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0@aar') {
       exclude group: 'com.android.support'
   }
   // 排除所有子依賴中的support依賴
   configurations {
      all*.exclude group: 'com.android.support'
   }
  • transitive
    作用:配置依賴傳遞
//依賴同於沒有使用 exclude 排除依賴 ,每個包的依賴項都會被遞歸分析並添加進來。
transitive = true
//則依賴關系同於用 exclude 排除依賴。
transitive = false
  • force
    作用:強制版本
// 強制使用 support-v4 26.1.0版本
compile('com.android.support:support-v4:26.1.0') {
   force = true
}

7、task配置

作用:配置自定義任務,例如編譯任務,將依賴、資源文件與項目分離
Tips:這塊內容較為復雜,單獨主題進行分析

8、定制項目

sourceCompatibility = 1.8
version = '1.0'

settings.gradle

1、pluginManagement(非必需)

作用:插件庫管理
Tips:放在配置文件最前端

pluginManagement {
	repositories {
	    //這個就是默認的插件庫,一般可不配置,除非有更好更快的插件庫
		gradlePluginPortal()
	}
}

2、settingsEvaluated(非必需)

作用:settings.gradle初始化完成的回調函數,用於做些初始化工作

gradle.settingsEvaluated {
    println "settings初始化完成"
}

3、projectsLoaded(非必需)

作用:所有項目載入完成回調函數

gradle.projectsLoaded {
    Gradle gradle ->
        println "子項目初始化完成"+gradle
}

4、自定義初始化方法(非必需)

//創建自定義方法
def customInit(){
	println"start init"
	//做自己想要做的初始化
  	println"end init"
}
//settings.gradle加載的時候,會執行這個方法
customInit()

5、rootProject.name(必需)

作用配置項目名稱

rootProject.name = 'test-core'

6、include(重要)

作用:配置多個項目

include ':app',':core'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM