Pandas 數據處理(三) - Cheat Sheet 中文版 pdf
Pandas 數據處理(二) - 篩選數據
Pandas 數據處理(一) - DataFrame 與 Serieshtml
開發任何軟件,如何管理依賴是一道繞不過去的坎,軟件開發過程當中,咱們每每會使用這樣那樣的第三方庫,這個時候,一個好的依賴管理就顯得尤其重要了。做爲一個自動構建工做,Gradle對依賴管理有着很好的支持。
一般咱們使用IDE(Eclipse、IDEA、Android Studio)開發Java項目,IDE自動爲咱們建立了Gradle文件,添加依賴也不過簡單的幾行代碼,這篇隨筆將從逐步解釋Gradle的依賴管理方法,但願對你們有所幫助。
若有錯誤,請不吝指出,很是感謝!若是本文對你有幫助,右下角點個推薦吧~java
常見的依賴包含兩種類型。android
(1) 一類是項目中所須要的庫,包括本地/倉庫中的文件和其餘項目文件(例如一個多項目工程,一個項目依賴於另外一個項目)
(2) 一類是實現自動化編譯、部署等所需的庫,包含Gradle的API和Groovy編寫的Task、Plugin等,這一類依賴在前2篇隨筆有提到和使用git
dependencies { <configuration name> <dependencies> }
在這裏,咱們以構建java項目爲例,構建java項目首先須要應用java插件
,插件的使用可參考上一篇隨筆Java Gradle之插件管理github
java插件針對不一樣操做,將依賴分爲10類(詳見 java plugin 45.5),下面介紹經常使用的5類spring
(1) compile:源代碼(src/main/java)編譯時的依賴,最經常使用
(2) runtime:源代碼(src/main/java)執行時依賴
(3) testCompile:測試代碼(src/main/test)編譯時的依賴
(4) testRuntime:測試代碼(src/main/java)執行時的依賴
(5) archives:項目打包(e.g.jar)時的依賴
數組
一般,一個JAR依賴需包含JAR文件組(group/命名空間)、JAR文件名(name)、JAR文件版本(version),特殊狀況下還可指定JDK版本。添加依賴能夠有如下方式:緩存
/* 單個依賴 */ compile group:'log4j', name:'log4j', version:'1.2.17' // 簡寫 => compile 'log4j:log4j:1.2.17' /* 以數組形式添加多個依賴*/ compile 'joda-time:joda-time:2.9.2', 'log4j:log4j:1.2.17' /* 閉包形式,以添加額外配置*/ compile (group:'log4j', name:'log4j', version:'1.2.17'){ // ... 額外配置 } /* 等價於 */ compile ('log4j:log4j:1.2.17'){ // ... 額外配置 }
gson
,點擊對應版本,例如2.6.2
'com.google.code.gson:gson:2.6.2'
// sourceCompatibility = 1.8爲java版本,默認爲當前JVM版本 apply plugin: 'java' sourceCompatibility = 1.8 version = '1.0' repositories { mavenCentral() } dependencies { compile 'org.springframework:spring-context:4.2.1.RELEASE' compile 'log4j:log4j:1.2.17' }
你可能會疑惑,聲明瞭這些依賴,這些依賴是在哪裏找到的呢?repositories
定義了下載依賴的倉庫閉包
/* Maven Central respoitory */ repositories { mavenCentral() } /* Maven JCenter respoitory */ repositories { jcenter() } /* Maven local respoitory */ /* 本地倉庫是以前下載的依賴,緩存在本地磁盤*/ repositories { mavenLocal() }
jcenter
和 mavenCentral
的區別,推薦看stackoverflow的回答repositories { mavenLocal() /* 指定本地倉庫地址 */ maven { url "file://E:/githubrepo/releases" } /* 指定的遠程倉庫 */ maven { url "http://mvnrepository.com/" } /* * 公司倉庫,可能須要驗證 * 不推薦直接將用戶名密碼寫在build.gradle中 * 能夠寫在~/.gradle/gradle.properties中,再使用 */ maven { url "<you_company_resp_url>" credentials { username 'your_username' password 'your_password' } } // 支持ivy倉庫 ivy { url "<ivy_resp_url>" } }
*.jar
,咱們也能夠將包含這些文件的文件夾(不一樣於mavenLocal)映射爲一個倉庫,但通常不推薦這樣作repositories { flatDir { dirs 'libs1/java/...','libs2' } }
transitive
實現,編譯時報錯,你就能夠知道進一步需添加哪些庫。dependencies { // transitive 屬性默認爲 true compile group:'log4j',name:'log4j',version:'1.2.17',transitive:false }
dependencies { compile ('commons-httpclient:commons-httpclient:3.1'){ exclude group:'commons-codec' //排除該group的依賴 // exclude group:'commons-codec',module:'commons-codec' // group是必選項,module可選 } }
// 庫 a 傳遞性依賴庫 b-1.2,與添加的b-1.1衝突 dependencies { compile 'a:a:1.0' compile 'b:b:1.1' }
Gradle解決衝突有如下幾種方式app
(1) 最近版本策略(默認):上例將忽略b-1.1,而下載b-1.2
(2) 衝突失敗策略:發生衝突時,編譯失敗(有些新版本庫並不兼容以前的,所以這個庫可讓開發者主動做出選擇)
(3) 強制指定版本策略:發生衝突時,使用開發者指定的版本
/* 衝突失敗策略設置*/ configurations.all { resolutionStrategy { failOnVersionConflict() } } /* 強制指定版本策略設置*/ dependencies { compile group:'b',name:'b',version:'1.1',force:true }
dependencies { /* 選擇1以上任意一個版本,這使發生版本衝突的概率變小*/ compile group:'b',name:'b',version:'1.+' /* 選擇最新的版本,避免直接指定版本號 */ compile group:'a',name:'a',version:'latest.integration' }
// ext 默認jar,可選屬性爲war、zip compile group:'b',name:'b',version:'1.1',ext:'war'
// 例如提供了2種包,a-1.0-dev.war, a-1.0-dev.jar compile group:'b',name:'b',version:'1.1',classifier:'dev',ext:'war'
compile group:'a',name:'a',version:'l.0' { dependencies 'b:b:1.1' }
(1) 查看全部依賴庫 gradle dependencies (2) 查看指定配置(詳見 1.3)的依賴庫 gradle dependencies -configuration <configuration> 例 gradle dependencies -configuration compile => 查看編譯時依賴 例 gradle dependencies -configuration runtime => 查看運行時依賴
分享建立價值,歡迎關注&留言~