8.1 甚么是依赖管理?
依赖管理非常粗略地分为两部分:
・ build 依赖自甚么东西
・ build 发布甚么东西
8.2 声明你的依赖
让我们来看看1些依赖声明。这是1个基本构建脚本:
例,声明依赖
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的核心3.6.7.Final需要参与编译项目。
这意味着,Hibernate的核心,需要在运行时依赖。
构建脚本还规定,编译该项目的测试需要junit> = 4.0。
它还告知Gradle在Maven的存储库查找所需的任何依赖关系。
8.3 依赖配置
1个配置是1个简单的命名集的依赖。我们将把它们作为依赖的配置。
你可以用它们来定义项目的外部依赖。正如我们将在后面看到,他们还用定义项目的发布。
Java插件定义了1些标准配置。这些配置代表了Java插件使用的类路径。下面列出1些:
compile
编译source code 需要的依赖。
runtime
在运行时所必须的产生classes的依赖关系。默许情况下,还包括编译时的依赖。
testCompile
编译该项目的测试源码 所需要的依赖。默许情况下,还包括编译产生classes和编译时的依赖。
testRuntime
运行测试需要的依赖。默许情况下,还包括编译,运行和测试编译依赖。
8.4 外部依赖
有多种类型的依赖,你可以定义。
外部依赖:依赖于当前构建工程以外的1些文件,并且是存储在仓库中的,比如Maven的中央,或企业Maven或Ivy库,或在本地文件系统中的目录。
例,外部依赖的定义
build.gradle:
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}
外部依赖性,使用标识组,名称和版本属性。依赖哪一种仓库,组和版本是可选的。
定义外部依赖的快捷情势看起来像“ 组:名称:版本 ”。
例,外部依赖的快捷定义
build.gradle:
dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
8.5 仓库
Gradle在1个库中寻觅外部依赖。存储仓库仅是1个文件集合,由group、name、version组成。
Gradle了解几种不同的贮存库格式,如Maven和Ivy,和访问资源库的几种不同的方法,如使用本地文件系统或HTTP。
默许情况下,Gradle没有定义任何资源库。您需要定义最少1个,然后才能使用外部依赖。
例,Maven的中央存储库的使用
build.gradle:
repositories {
mavenCentral()
}
例,远程Maven仓库的使用
build.gradle:
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
例,远程Ivy目录的用法
build.gradle:
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
您也能够在本地文件系统上的存储库。这适用于Maven和Ivy库。
例如8.7。本地Ivy目录的使用
build.gradle
repositories {
ivy {
// URL can refer to a local directory
url "../local-repo"
}
}
1个项目可以有多个存储库。Gradle将按指定的顺序在每一个库中寻觅依赖,最早在某个库中找到就停止。
8.6 发布
依赖的配置也被用来发布文件。
通常不需要特别告知Gradle甚么需要发布。但是,你需要告知Gradle在哪里发布。您可以通过连接库的uploadArchives任务。
这里是发布到远程Ivy库的例子:
例,发布到Ivy库
build.gradle:
uploadArchives {
repositories {
ivy {
credentials {
username "username"
password "pw"
}
url "http://repo.mycompany.com"
}
}
}
现在,当你运行gradle uploadArchives,Gradle将建立并上传你的Jar文件。Gradle也会生成并上传ivy.xml。
您也能够发布到Maven仓库。语法稍有不同。请注意,您还需要使用Maven插件,以发布到Maven仓库。
这时候,Gradle将生成并上传pom.xml。
例,发布到Maven仓库
build.gradle:
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}