本章介紹一些 Gradle 依賴管理的基礎
## [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2008.%20Dependency%20Management%20Basics%20%E4%BE%9D%E8%B5%96%E7%AE%A1%E7%90%86%E7%9A%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md#81-what-is-dependency-management-什么是依賴管理)8.1\. What is dependency management? 什么是依賴管理
大致上,依賴管理是由2塊組成。首先,Gradle 需要知道項目構建或者運行的需要是東西。我們把引進的文件稱之為 項目的依賴。其次,Gradle 需要構建和上傳項目的產物。我們把向外輸出的文件稱之為項目的發布。現在看下細節:
很多項目不能完全自我包含。他們需要其他項目的產物。比如, 使用 Hibernate ,JDBC driver 或者 Ehcache jars,需要將他們放在我們項目的 classpath, 來實現需要的功能。
這些引進的項目依賴的文件, Gradle 允許你告訴你的項目所需要的依賴,這樣項目才能找到他們,在構建的時候使用他們。這些依賴可能要從遠程的 Maven 或者 Ivy 下載,放在你的本地的目錄,或者需要被其他項目構建(在相同的 多 project 構建中)。我們稱之為 dependency resolution (依賴性解析)。
請注意,此功能提供了 Ant 的一個主要優勢。與 Ant 相比,你只需要指定需要加載的絕對或相對路徑的特定的 jars。在 Gradle,你只是聲明依賴的的“名字”, 和其他布局的確定的位置。你可以通過增加 Apache Ivy到 Ant 得到類似的行為,但 Gradle 做得更好。
通常,一個項目的依賴會包含自己的依賴。例如,Hibernate 的核心需要幾個其他包在類路徑中存在才能運行。所以,當 Gradle 運行你的項目的測試,它也需要找到這些依賴關系,使他們存在。我們稱這些 transitive dependencies (過渡依賴)。
大多數項目的主要目的是構建一些文件是在項目中使用。例如,如果你的項目生成 Java 庫,你需要建立一個 jar,也許一個源 jar 和一些文檔,并將其發布的某個地方。
這些輸出文件以發布包的形式。Gradle 還負責這個重要的工作給你。你聲明你的項目的發布,Gradle 照顧構建和發布他們。究竟發布什么取決于你想做什么。你可能想將文件復制到本地目錄,或將它們上傳到一個遠程 Maven 或 Ivy 庫。或者你可能使用在相同的多 project 的另一個項目文件的構建。我們稱這個過程為 publication(發布) 。
## [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2008.%20Dependency%20Management%20Basics%20%E4%BE%9D%E8%B5%96%E7%AE%A1%E7%90%86%E7%9A%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md#82-declaring-your-dependencies-聲明依賴)8.2\. Declaring your dependencies 聲明依賴
下面是基本的腳本
Example 8.1\. Declaring dependencies
build.gradle
~~~
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
~~~
這個腳本說明了幾個事。首先項目需要 Hibernate core 3.6.7.Final 版本來編譯。其中隱含的意思是,Hibernate core 和 他的依賴在運行時是需要的。其次,需要 junit >= 4.0 版本在測試時需要編譯。同時 告訴 Gradle 依賴在 Maven central 庫 中找。下面詳述
## [](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2008.%20Dependency%20Management%20Basics%20%E4%BE%9D%E8%B5%96%E7%AE%A1%E7%90%86%E7%9A%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md#83-dependency-configurations-項目配置)8.3\. Dependency configurations 項目配置
一個配置是一個簡單的命名依賴的集合。我們稱它為依賴配置。你可以用它們來聲明項目的外部依賴。正如我們將看到的,他們還用聲明項目的 發布。
Java 配置定義了一些標準的配置,這些配置在Java 插件使用的 classpath 中,下面是一些列表。詳見[Chapter 23\. The Java Plugin 關于 Java 插件](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2023.%20The%20Java%20Plugin%20%E5%85%B3%E4%BA%8E%20Java%20%E6%8F%92%E4%BB%B6.md)?中 Table 23.5, “Java plugin - dependency configurations“
**compile**
編譯項目的生產源所需的依賴。
**runtime**
生產類在運行時所需的依賴。默認情況下,還包括編譯時的依賴。
**testCompile**
編譯項目的測試源所需的依賴。默認情況下,還包括產品編譯類和編譯時的依賴。
**testRuntime**
運行測試所需的依賴。默認情況下,還包括 編譯,運行時和測試編譯的依賴。
各種插件添加進一步的標準配置。您也可以定義自己的自定義配置,使用你的建構建。請參見[Chapter 51\. Dependency Manageme](https://github.com/waylau/Gradle-2-User-Guide/blob/master/Chapter%2051.%20Dependency%20Management%20%E4%BE%9D%E8%B5%96%E7%AE%A1%E7%90%86.md)?Section 51.3, “Dependency configurations” 關于更多自定義依賴配置。
- 關于
- 第1章 Introduction 介紹
- 第2章 Overview 總覽
- 第3章 Tutorials 教程
- 第4章 Installing Gradle 安裝
- 第5章 Troubleshooting 問題解決
- 第6章 Build Script Basics 構建腳本的基礎識
- 第7章 Java Quickstart 快速開始 Java
- 第8章 Dependency Management Basics 依賴管理的基礎知識
- 第9章 Groovy Quickstart 快速開始 Groovy
- 第10章 Web Application Quickstart 快速開始 Web 應用
- 第11章 Using the Gradle Command-Line 使用 Gradle 命令行
- 第12章 Using the Gradle Graphical User Interface 使用 Gradle 圖形化用戶界面
- 第13章 Writing Build Scripts 編寫構建腳本
- 第14章 Tutorial - 'This and That' 教程-這個那個
- 第15章 More about Tasks 更多關于任務
- 第16章 Working With Files 跟文件工作
- 第17章 Using Ant from Gradle 從 Gradle 使用 Ant
- 第18章 Logging 日志.md
- 第19章 The Gradle Daemon 守護進程
- 第20章 The Build Environment 構建環境
- 第21章 Gradle Plugins 插件
- 第22章 Standard Gradle plugins 標準 Gradle 插件
- 附錄E Existing IDE Support and how to cope without it 支持的 IDE 以及如何應對沒有它