8.5 仓库
Gradle 是怎么用寻找外部依赖的呢?Gradle从仓库中去寻找他们。一个仓库就是一些文件的集合,通过组,名称和版本进行组织。Gradle可以似乎别集中不同的仓库类型,例如Maven和Ivy,它也支持集中不同的方式去访问仓库,如通过本地文件系统或者通过Http。
默认的Gradle不定义任何仓库。如过你需要使用外部依赖,在使用前你至少需要定义一个仓库。一个选择就是使用Maven中心仓库。
Example 8.4. Usage of Maven central repository
build.gradle
repositories {
mavenCentral()
}
或者一个远程的Maven仓库
Example 8.5. Usage of a remote Maven repository
build.gradle
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
或者一个远程的Ivy仓库
Example 8.6. Usage of a remote Ivy directory
build.gradle
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
你也可以在本地文件系统拥有仓库,这可以是Maven和Ivy仓库。
Example 8.7. Usage of a local Ivy directory
build.gradle
repositories {
ivy {
// URL can refer to a local directory
url "../local-repo"
}
}
一个工程可以有很多的仓库。Gradle将会根据他们的描述顺序在这些仓库中依次的查找这些依赖。一旦找到了需要的模块就停止,不会再继续寻找。
阅读Section 51.6, “Repositories”这节来了解更多关于定义和使用仓库方面的知识。
8.6 发布镜像文件
依赖配置一样可以用来发布文件,我们把这些文件叫做镜像文件,或者简单的称镜像
插件可以帮我们做很多关于定义一个镜像方面的工作,所以一般情况下,你不需要做很多事情来告诉Gradle你需要发布什么。但是,你需要告诉Gradle镜像要发布到哪里去。你可以通过把仓库地址链接到uploadArchives任务来告诉Gradle发布到哪。下面是一个发布到远程Ivy仓库的一个例子
Example 8.8. Publishing to an Ivy repository
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文件。
Example 8.9. Publishing to a Maven repository
build.gradle
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}
读Chapter 52, Publishing artifacts来了解更多这方面的信息
8.7 接下来做什么。
要了解关于解决依赖的方法,查看 Chapter 51, Dependency Management, 以及发布镜像查看Chapter 52, Publishing artifacts。
如果你对这里提到的DSL成员感兴趣,看一下Project.configurations{}, Project.repositories{} 以及 Project.dependencies{}.