一、Gradle是什麼?
Gradle是一個基於JVM的構建工具,它允許開發人員描述構建過程中需要執行的任務,並使用聲明式語法指定任務之間的依賴關係。Gradle依賴關係是它的重要組成部分,初學者應該理解它的基本概念。
二、什麼是Gradle依賴?
Gradle依賴是將外部模塊或庫引入到項目中的一種方式。通過Gradle依賴聲明,Gradle將在構建期間自動獲取並導入所需的jar文件或庫文件。
三、如何使用Gradle依賴?
在Gradle項目中,如果你需要添加一個外部庫,你可以在配置文件文件中使用語法 `implementation ‘group:name:version’` (也可以用`api`或`compileOnly` 代替 `implementation`,具體見下文)。其中,’group’代表庫所屬的組,’name’代表庫的名稱,’version’代表庫的版本。例如:
implementation 'junit:junit:4.13.1'
這個依賴告訴Gradle自動獲取junit庫的版本4.13.1,你就可以在項目中使用junit的類了。
四、Gradle依賴的類型
Gradle提供了三種不同類型的依賴:
1. implementation類型的依賴
`implementation`表示該依賴只在當前 module 中有效,而不會傳遞給其他依賴它的 module。如果沒有指定依賴類型,則默認使用`implementation`。
示例代碼:
dependencies { implementation 'com.google.code.gson:gson:2.8.6' }
2. api類型的依賴
`api`類型的依賴將會傳遞給其他依賴它的 module,以便於其他 module 中的代碼可以使用這些依賴相關的 API。該類型的依賴在模塊或庫的 API 保持穩定,適合 ThirdParty 使用的時候建議使用。
dependencies { api 'com.google.code.gson:gson:2.8.6' }
3. compileOnly類型的依賴
`compileOnly`只在編譯階段有用,而不會在最終的打包結果中出現。這種依賴在你的代碼中僅用於編譯檢查,但不會在運行時加載。可以使用這種依賴類型來解決在模塊中引用其他模塊造成的多餘依賴版本問題。
dependencies { compileOnly 'junit:junit:4.13.1' }
五、Gradle依賴的版本規則
Gradle支持使用多種方法指定依賴的版本。下面列舉一些實用的版本規則:
1. 固定版本號
比如這種寫法,完全指定使用的版本號 `implementation ‘junit:junit:4.13.1’`。
2. 動態版本號
有時,我們可能想要使用最新的庫版本。Gradle支持使用通配符’*’來指定最新的版本號。例如:
implementation 'junit:junit:4.13.+'
這個依賴將優先使用版本4.13.x中的最新版本。
3. 區間版本號
當我們想要使用一系列版本號時,可以使用開區間或閉區間。例如:
implementation 'junit:junit:[4.12, 4.13.1]'
這個依賴將允許使用4.12及以上但低於4.13.1的版本。
六、Gradle依賴的排除機制
如果你添加的一個依賴包含其他不需要的依賴項,Gradle允許你排除這些不需要的依賴項。下面是一個帶有不必要依賴項的依賴的示例代碼:
implementation 'com.example:foo:1.0.0' { exclude group: 'org.unwanted', module: 'unwanted-module' }
在這個示例中,Gradle會自動獲取組`com.example`中的`foo`以及其所有依賴的庫,但會排除組`org.unwanted`中的`unwanted-module`庫。這可以有效避免依賴衝突和不必要的jar重複引用。
七、Gradle依賴的傳遞性
Gradle依賴機制的一個重要特性是傳遞性:如果一個模塊依賴一個庫,那麼該庫自己依賴的庫也會自動成為模塊的依賴項。這就是所謂的傳遞性依賴。
例如:
dependencies { implementation 'com.example:foo:1.0.0' }
在這個示例中,如果`foo`庫依賴於`bar`和`baz`庫,則這些庫也成為項目的依賴項。
八、Gradle依賴的作用域
Gradle允許為依賴指定不同的作用域。不同的作用域可以控制某個依賴是否在編譯期、運行期或測試期可用。以下是Gradle支持的一些作用域:
1. compileOnly
這個作用域只在編譯時有效,不在打包後的文件中生效。
2. implementation
這個作用域在編譯和運行時都是有效的。
3. testImplementation
這個作用域只在測試代碼編譯和運行時有效。
九、Gradle依賴的遠程資源
Gradle允許從遠程存儲庫中下載並使用依賴庫。Gradle支持常用的Maven倉庫、JCenter等。這意味着不必手動下載和添加依賴項,而是可以從多個倉庫中選擇和添加所需的庫。
例如,下面的示例依賴將自動從Maven中央存儲庫中下載支持的庫:
repositories { mavenCentral() } dependencies { implementation 'com.google.guava:guava:29.0-jre' }
十、Gradle依賴的本地資源
除了遠程存儲庫,Gradle還支持使用本地文件系統中的庫作為依賴項。通過在`dependencies`聲明中添加本地路徑,您可以將本地庫添加為項目的依賴項。
例如,下面的依賴項將模塊添加為本地依賴項:
dependencies { implementation files('libs/local-library.jar') }
總結
Gradle依賴是Gradle構建系統的重要組成部分,理解依賴機制可以幫助我們更有效地管理和組織代碼庫。依賴類型、版本規則、排除機制、傳遞性、作用域、遠程資源和本地資源是掌握Gradle依賴機制的重要要素。通過深入了解和使用依賴機制,我們可以為自己的項目帶來許多方便和靈活的特性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244225.html