Gradle和Maven倉庫介紹

Gradle 介紹

Gradle是一個基於JVM的構建工具,是一款通用靈活的構建工具,支持maven, Ivy倉庫,支持傳遞性依賴管理,而不需要遠程倉庫或者是pom.xml和ivy.xml配置文件,基於Groovy,build腳本使用Groovy編寫。

Gradle不單單是一個配置腳本,它的背後是幾門語言,如果硬讓我說,我認爲是三門語言。

  • Groovy Language
  • Gradle DSL
  • Android DSL

DSL的全稱是Domain Specific Language,即領域特定語言,或者直接翻譯成“特定領域的語言”,,其實就是這個語言不通用,只能用於特定的某個領域,俗稱“小語言”。因此DSL也是語言。

Groovy和Java

Groovy是一門jvm語言,它最終是要編譯成class文件然後在jvm上執行,所以Java語言的特性Groovy都支持,我們完全可以混寫Java和Groovy。

Groovy提供了更加靈活簡單的語法,大量的語法糖以及閉包特性可以讓你用更少的代碼來實現和Java同樣的功能。

類似解析xml文件,Groovy就非常方便,只需要幾行代碼就能搞定,而如果用Java則需要幾十行代碼。

安裝Gradle

在Android Studio中新建項目成功後會下載Gradle,不翻牆也是可以下載,但是訪問特別慢,建議翻牆下載。

Gradle下載後路徑:

  • Mac上默認 /Users/<用戶名>/.gradle/wrapper/dists 目錄
  • Win上默認 C:\Documents and Settings<用戶名>.gradle\wrapper\dists 目錄

目錄下有個 gradle-x.xx-all 的文件夾。

如果下載實在太慢,但是又不想翻牆的話,可以自己手動到Gradle官網下載對應的版本,然後將下載的.zip文件(也可以解壓)複製到上述的gradle-x.xx-all 文件夾下,不過還是建議讓它直接下載的好。

Maven 倉庫

Maven 倉庫是項目中依賴的第三方庫,這個庫所在的位置叫做倉庫。

在 Maven 中,任何一個依賴、插件或者項目構建的輸出,都可以稱之爲構件。
Maven 倉庫能幫助我們管理構件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 倉庫有三種類型:

  • 本地(local)
  • 中央(central)
  • 遠程(remote)

本地倉庫

Maven 的本地倉庫,在安裝 Maven 後並不會創建,它是在第一次執行 maven 命令的時候才被創建。

運行 Maven 的時候,Maven 所需要的任何構件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會首先嚐試從遠程倉庫下載構件至本地倉庫,然後再使用本地倉庫的構件。

中央倉庫

Maven 中央倉庫是由 Maven 社區提供的倉庫,其中包含了大量常用的庫。

中央倉庫包含了絕大多數流行的開源Java構件,以及源碼、作者信息、SCM、信息、許可證信息等。一般來說,簡單的Java項目依賴的構件都可以在這裏下載到。

中央倉庫的關鍵概念:

  • 這個倉庫由 Maven 社區管理。
  • 不需要配置。
  • 需要通過網絡才能訪問。

要瀏覽中央倉庫的內容,maven 社區提供了一個 URL:maven倉庫 。使用這個倉庫,開發人員可以搜索所有可以獲取的代碼庫。

遠程倉庫

如果 Maven 在中央倉庫中也找不到依賴的文件,它會停止構建過程並輸出錯誤信息到控制檯。

爲避免這種情況,Maven 提供了遠程倉庫的概念,它是開發人員自己定製倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。

Gradle加載庫使用

Gradle中有多個maven {}配置段,分爲以下幾種可選配置:

配置 含義
mavenLocal() 直接使用~/.m2/作爲maven倉庫的路徑
mavenCentral() 使用maven中央倉庫http://central.maven.org/作爲maven倉庫的路徑
jcenter() 使用jcenter倉庫http://jcenter.bintray.com/作爲maven倉庫路徑,在國內通常比mavenCentral()快很多
maven { url: '/path/to/custom/url' } 自定義的maven倉庫路徑
根目錄下的gradle文件

在我們的工程的根目錄下的gradle文件配置

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
         //默認加載所需類庫都會去jcenter中加載  如果沒有找對對應的類庫則會去我們配置的Maven倉庫中查找
        jcenter()
        maven{
            //配置Maven倉庫的地址
            url "http://repo.springsource.org/libs-milestone-local"
        }
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

可以看見jcenter() 在app的目錄下的build.gradle文件裏.

以及會看到 compile 'com.google.gson:gson:2.2.4'之類的寫法

com.google.gson:gson:2.2.4這個庫其實在jcenter裏邊有 ,如果加載一個類庫jcenter中沒有,那麼就會去URL配置的Maven倉庫中查找。

app目錄下的gradle文件

配置好上面的文件後 ,我們需要在 app目錄下的build.gradle中去引用所需要的類庫:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:support-v4:25.1.1'
    testCompile 'junit:junit:4.12'
    compile 'com.gopivotal.manager:common:1.2.1.RELEASE'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章