2012-12-17 212 views
126

在gradle構建的buildScript部分或構建的根級別聲明存儲庫之間有什麼區別。Gradle構建腳本依賴關係

選項1:

的build.gradle

buildScript { 
    repositories { 
     mavenCentral(); 
    } 
} 

的build.gradle

repositories { 
    mavenCentral(); 
} 

回答

115

在buildScript BL上的存儲庫ock用於獲取buildScript依賴關係的依賴關係。這些是放置在構建的類路徑上的依賴關係,可以從構建文件中引用。例如互聯網上存在的額外插件。

根級上的存儲庫用於獲取項目依賴的依賴關係。所以你需要編譯你的項目的所有依賴。

+12

如果我需要行家中央對我的buildscript和我的兩個項目,我需要聲明它兩次? –

+13

是的,你需要確定兩次。 –

+0

作爲一個例子,除了通常的「compile」和「testCompile」關鍵字外,Spring propdeps插件還可以添加到buildscript中以啓用依賴關係的「提供」和「可選」關鍵字。注意:war插件已經提供了「provided」關鍵字,您只需要在戰爭中部署的jar項目的propdeps。 – Powerlord

12

構建腳本(即build.gradle)可能具有執行構建腳本本身的一些依賴關係。您可以將這些依賴關係放在buildScript塊中。 Chapter 4 of Gradle Beyond the Basics詳細描述。

+23

鏈接無需身份驗證即可運行。 – RaGe

1

我想給你清楚的概念。爲此,我附上build.grade快照代碼以便更好地理解。

buildscript依賴關係:

buildscript { 
    repositories { 
     maven { url("https://plugins.gradle.org/m2/") } 
    } 

    dependencies { 
     classpath 'net.saliman:gradle-cobertura-plugin:2.3.2' 
     classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release' 
    } 
} 

根水平/核心的依賴關係:

repositories{ 
    mavenLocal() 
    maven { url("https://plugins.gradle.org/m2/") } 
    maven { url "https://repo.spring.io/snapshot" } 
} 

dependencies { 
     //Groovy 
     compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10' 

     //Spock Test 
     compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3' 

     //Test 
     testCompile group: 'junit', name: 'junit', version: '4.10' 
     testCompile group: 'org.testng', name: 'testng', version: '6.8.5' 
} 

所以,首先我想在一個字澄清

I) buildscript依賴jar文件會從 buildscript存儲庫下載。 [項目外部依賴項]

ii)根級依賴關係jar文件將從根級別下載 級庫。 [對於項目依賴]

這裏,

的「buildscript」塊僅控制用於buildscript過程本身的依賴關係,而不是應用程序代碼。由於各種gradle插件如gradle-cobertura-plugin,gradle-lint-plugin都可以從buildscript回購站找到。這些插件不會被引用爲應用程序代碼的依賴關係。

但是對於項目編譯和測試,運行jar文件如groovy all jar, junit and testng jar將從根級存儲庫中找到。

而另一件東西,maven { url("https://plugins.gradle.org/m2/") }部分可以在兩個塊中使用。因爲它們用於不同的依賴關係。

資源鏈接:Difference between dependencies within buildscript closure and core