## 1.依賴管理基礎之dependencies
依賴管理中gradle首先要做的是找到哪些東西需要去構建或者執行,在這一部分我們將輸入的文件稱為依賴關系(dependencies)。
## 2.依賴管理基礎之publication
依賴管理中gradle要做的第二件事就是構建然后上傳項目的產出,在這一部分我們稱這些輸出的文件為項目的產出(publication)
## 3.依賴解析-dependency resolution
輸入的文件構成了項目的依賴,gradle允許你告訴它你項目所依賴的東西。然后gradle會找到這些所依賴的文件,然后在構建時起作用。有時候這些依賴文件需要從遠程倉庫下載。有時也可以指定本地的依賴文件。而在多項目構建中,可能還會依賴其他項目。
項目來說,這種方式要比ant的構建方式有很大的便捷。在ant構建中,你必須要有一個完整的路徑去告訴ant你需要去哪里下載項目所依賴的東西。而在gradle中你只需要簡單的高速gradle你需要依賴的jar包名稱,它自己就能找到。當然有人會說我可以通過添加Apache Ivy來達到相同的目的,但是gradle還是好用點。
## 4.傳遞依賴-transitive dependencies.
有時候你所依賴的項目本身也依賴其他項目,這很正常,不可能每一個項目都是純潔項目。對于這個問題,gradle又是怎么解決的的呢?這個時候就用到了傳遞依賴的特性。在gradle構建的過程中,它會發現這些隱藏的依賴,從而自動獲取這些依賴,然后將他們倒入到項目中,使之有效。
## 5.定義依賴
~~~
apply plugin: 'java'
//依賴的jar包
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile group:'org.hibernate',name:'hibernate-core',version:'4.3.7.Final'
testCompile group:'junit',name:'junit',version:'4.12'
}
//定義倉庫
repositories{
mavenCentral();
}
~~~
在maven倉庫中找到最新的版本填入上面的version中,gradle在構建的時候自動下載這些jar包。
我們在android studio上執行后會發現jar包都下到項目目錄下。從圖中可以看出,我們不僅下載了定義的jar包,這些依賴的jar所依賴的jar包也一并下載下來。

##6.依賴配置
#### compile:該依賴是為了編譯項目的源碼
#### runtime:該依賴為了項目運行時的classes,默認情況下也是為了編譯
#### testCompile:該依賴是為了編譯項目測試的源碼,默認情況下包括compile和runtime
#### testRuntime:該依賴是為了執行測試的case。默認情況下包括compile、runtime和testCompile
以后會學習自定義的配置。
## 7.外部依賴
~~~
compile group:'org.hibernate',name:'hibernate-core',version:'4.3.7.Final'
~~~
其中name和version是可選的。
也可以定義為如下形式:
~~~
compile 'org.hibernate:hibernate-core:4.3.7.Final'
~~~
## 8.gradle如何使用倉庫
定義依賴都是在倉庫中去尋找,以group:name:version三個關鍵字在倉庫中匹配某一個jar包。gradle內部知道針對不同的倉庫的不同的獲取方式以及采取不同的倉庫格式。有本地文件系統和http等方式。默認情況下gradle是不知道選擇哪個倉庫,所以需要用戶顯示的指定,例如我們指定maven倉庫:
~~~
repositories{
mavenCentral();
}
~~~
~~~
//定義倉庫
repositories{
//mavenCentral();
//maven遠程倉庫
{
url "http://repo.mycompany.com/maven2"
}
}
~~~
~~~
repositories{
//mavenCentral();
//maven遠程倉庫
//maven{
//url "http://repo.mycompany.com/maven2"
//}
//ivy遠程倉庫
ivy{
url "http://repo.mycompany.com/repo"
}
}
~~~
~~~
//mavenCentral();
//maven遠程倉庫
// maven{
// url "http://repo.mycompany.com/maven2"
// }
ivy {
url "../local-repo"
}
~~~
(以上四種方式經過驗證都可以獲取jar包)
一個項目可以定義多個依賴的倉庫,gradle會根據特定的順序去各個倉庫中查找所需要的jar包。知道找到所需要的jar包,就結束。
## 9.發布產品
你無需告訴gradle去發布產品,你只需要告之發布的產品放在什么地方就可以了。例如你想發布到Ivy服務器上
~~~
uploadArchives {
//定義倉庫
repositories {
ivy {
// 證書
credentials {
username "username"
password "pw"
}
url "http://repo.mycompany.com"
}
}
}
~~~
你需要定義一個uploadArchives的task。這樣你就可以執行下面的命令來上傳jar到遠程倉庫。還會生成一個ivy.xml? 然后上傳到遠程倉庫
~~~
gradle uploadArchives
~~~
同樣你也可以上傳到maven倉庫中
~~~
uploadArchives {
//定義倉庫
repositories {
mavenDeployer{
repository(url:"file://localhost/tmp/myRepo/")
}
}
}
~~~
執行該任務后,會生成一個pom.xml然后上傳到指定的路徑。
- 前言
- gradle學習(1)-helloworld
- gradle學習(2)-基礎語法
- gradle學習(3)-基礎認識
- gradle學習(4)-構建java項目
- gradle學習(5)-創建eclipse項目
- gradle學習(6)-依賴管理
- gradle學習(7)-groovy
- gradle學習(8)-gradle的命令行
- gradle學習(9)-獲取build相關信息
- gradle學習(10)-gui
- gradle學習(11)-編寫構建腳本
- gradle學習(12)-groovy一些基礎語法
- gradle學習(13)-有的沒的
- gradle學習(14)-任務
- gradle學習(15)-任務
- gradle學習(16)-操作文件
- gradle學習(17)-被合并的ant
- gradle學習(18)-ant的屬性
- gradle學習(19)-log系統
- gradle學習(20)-詳解java插件
- gradle學習(21)-在eclipse中構建java項目
- gradle復習(1)-2種定義任務方式的區別
- gradle復習(2)-eclipse中添加依賴jar包
- gradle復習(3)-在gradle項目中使用TestNG
- gradle復習(4)-Cannot find System Java Compiler
- gradle復習(5)-Test remote debug
- gradle復習(6)-深入Jacoco
- gradle復習(7)-深入Jacoco
- gradle復習(8)-Task中行為
- gradle學習(22)-Sonar
- gradle學習(23)-Sonar runner