一、定義
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化構建工具。Gradle使用一種基於Groovy的特定領域語言來聲明項目設置,取代了基於XML的Maven語法。它強調項目的可配置性、性能和多項目構建,支持增量構建。在Gradle中使用jar包是非常常見的,那麼這些jar包應該放在哪裡呢?
二、放在本地倉庫
Gradle本地倉庫是Gradle默認為項目提供的倉庫,通常情況下,我們下載的Jar包放在本地倉庫可以保證項目的穩定性。默認情況下,Gradle的本地倉庫位於用戶目錄下的「.gradle」文件夾下的「caches」目錄中,裡面包含了從maven中央倉庫下載的Jar包和本地構建的Jar包,以及其他插件等信息。
我們可以通過在構建腳本中增加以下代碼來控制Jar包是否從本地倉庫下載:
repositories { mavenCentral() }
如果需要從本地倉庫下載Jar包,Gradle把Jar包的Dependency表示成「org.gradle:foo:1.0」,它將在本地倉庫中搜索jars/foo-1.0.jar文件作為依賴項。如果在本地倉庫中沒有找到,Gradle會從默認的遠程存儲庫中搜索。Gradle在構建過程中緩存所有從遠程存儲庫和本地倉庫中找到的Jar包。
三、放在項目目錄中
除了放在本地倉庫中,我們還可以將Jar包放在項目目錄中。這在需要使用特定版本的Jar包或者使用自定義Jar包時非常有用,也可以確保特定版本的Jar包在所有開發人員之間的一致性。
這樣做的方法是在項目目錄下創建一個libs文件夾,將jar包放在裡面,然後在Gradle的構建腳本中使用以下代碼來設置:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) }
其中,dir指需要掃描的目錄,可以是相對路徑或絕對路徑,include參數指允許包含的文件,這裡我們只包含.jar文件。Gradle會自動搜索該目錄,並將其轉換為依賴庫,我們可以像使用其他庫一樣使用它們:
import com.example.MyClass ... MyClass myObject = new MyClass()
四、放在遠程倉庫
Gradle支持從遠程倉庫下載Jar包,這在需要使用或共享公共庫時非常有用,也可以通過配置私有存儲庫來下載自定義Jar包。要使用遠程存儲庫,必須在構建腳本中聲明遠程存儲庫。例如,我們可以使用以下代碼從Maven倉庫下載Jar包:
repositories { mavenCentral() } dependencies { implementation 'com.google.guava:guava:30.1-jre' }
在這個例子中,我們聲明了Maven中央倉庫作為遠程存儲庫,並使用dependency聲明了需要在此構建中使用的guava庫。
五、從其他項目中導入
在多個項目中使用相同的Jar包是常見的,這時我們可以使用GRADLE中的Project-to-Project依賴項。在此模式下,Gradle會將另一個項目中的Jar包作為依賴傳遞到當前項目中,我們可以像使用其他庫一樣使用它們。我們可以使用以下代碼聲明項目到項目的依賴項:
dependencies { implementation project(":MyProject") }
其中「MyProject」是我們要依賴的項目的名稱,Gradle會自動搜索它的構建輸出,包括其所有庫和jar包,依賴關係以及其他項目內容,並將其添加到構建腳本的依賴關係圖中,然後可以使用它們。
總結
本文介紹了Gradle下載的jar包應該放在哪裡。我們可以把jar包放在本地倉庫,這是Gradle默認提供的倉庫,也可以把jar包放在項目目錄中,這樣可以保證特定版本的jar包在所有開發人員之間的一致性。另外,我們也可以把Jar包放在遠程倉庫,用於共享或自定義Jar包,並且可以使用Project-to-Project依賴項從其他項目中導入Jar包。根據具體的需求,我們可以靈活使用這些方法選擇合適的存儲方式。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246489.html