本章介紹一些 Gradle 依賴管理的基礎
大致上,依賴管理是由2塊組成。首先,Gradle 需要知道項目構(gòu)建或者運行的需要是東西。我們把引進的文件稱之為 項目的依賴。其次,Gradle 需要構(gòu)建和上傳項目的產(chǎn)物。我們把向外輸出的文件稱之為項目的發(fā)布。現(xiàn)在看下細節(jié):
很多項目不能完全自我包含。他們需要其他項目的產(chǎn)物。比如, 使用 Hibernate ,JDBC driver 或者 Ehcache jars,需要將他們放在我們項目的 classpath, 來實現(xiàn)需要的功能。
這些引進的項目依賴的文件, Gradle 允許你告訴你的項目所需要的依賴,這樣項目才能找到他們,在構(gòu)建的時候使用他們。這些依賴可能要從遠程的 Maven 或者 Ivy 下載,放在你的本地的目錄,或者需要被其他項目構(gòu)建(在相同的 多 project 構(gòu)建中)。我們稱之為 dependency resolution (依賴性解析)。
請注意,此功能提供了 Ant 的一個主要優(yōu)勢。與 Ant 相比,你只需要指定需要加載的絕對或相對路徑的特定的 jars。在 Gradle,你只是聲明依賴的的“名字”, 和其他布局的確定的位置。你可以通過增加 Apache Ivy到 Ant 得到類似的行為,但 Gradle 做得更好。
通常,一個項目的依賴會包含自己的依賴。例如,Hibernate 的核心需要幾個其他包在類路徑中存在才能運行。所以,當 Gradle 運行你的項目的測試,它也需要找到這些依賴關系,使他們存在。我們稱這些 transitive dependencies (過渡依賴)。
大多數(shù)項目的主要目的是構(gòu)建一些文件是在項目中使用。例如,如果你的項目生成 Java 庫,你需要建立一個 jar,也許一個源 jar 和一些文檔,并將其發(fā)布的某個地方。
這些輸出文件以發(fā)布包的形式。Gradle 還負責這個重要的工作給你。你聲明你的項目的發(fā)布,Gradle 照顧構(gòu)建和發(fā)布他們。究竟發(fā)布什么取決于你想做什么。你可能想將文件復制到本地目錄,或?qū)⑺鼈兩蟼鞯揭粋€遠程 Maven 或 Ivy 庫。或者你可能使用在相同的多 project 的另一個項目文件的構(gòu)建。我們稱這個過程為 publication(發(fā)布) 。
下面是基本的腳本
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 庫 中找。下面詳述
一個配置是一個簡單的命名依賴的集合。我們稱它為依賴配置。你可以用它們來聲明項目的外部依賴。正如我們將看到的,他們還用聲明項目的 發(fā)布。
Java 配置定義了一些標準的配置,這些配置在Java 插件使用的 classpath 中,下面是一些列表。詳見Chapter 23. The Java Plugin 關于 Java 插件?中 Table 23.5, “Java plugin - dependency configurations“
compile
編譯項目的生產(chǎn)源所需的依賴。
runtime
生產(chǎn)類在運行時所需的依賴。默認情況下,還包括編譯時的依賴。
testCompile
編譯項目的測試源所需的依賴。默認情況下,還包括產(chǎn)品編譯類和編譯時的依賴。
testRuntime
運行測試所需的依賴。默認情況下,還包括 編譯,運行時和測試編譯的依賴。
各種插件添加進一步的標準配置。您也可以定義自己的自定義配置,使用你的建構(gòu)建。請參見Chapter 51. Dependency Manageme?Section 51.3, “Dependency configurations” 關于更多自定義依賴配置。
更多建議: