仓库
gradle对现有仓库支持如下
- Maven 仓库
本地文件系统或远程服务器中的Maven仓库,或者预配置的Maven Central - Ivy 仓库
本地文件系统或远程服务器中的Ivy仓库,具有特定的结构模式 - 扁平的目录仓库
本地文件系统的仓库或者远程目录仓库,没有元数据支持
仓库API
- 项目中定义仓库的关键是Repositoryhandler接口,它提供了添加各种类型仓库的方法。
- 这些方法将会在repositories配置块中被调用,当声明多个仓库时,依赖管理器在下载依赖及其元数据时会按照声明的顺序来检查仓库
Maven仓库
Maven仓库的类库以jar文件形式表现。元数据用xml表示,并使用POM文件描述了类库相关信息及其传递性依赖。
RepositoryHandler接口提供了两个方法来定义Maven仓库。mavenCentral()方法用来将Maven Central添加到repositories中,mavenLocal()方法用来在文件系统中关联一个本地的Maven仓库。
添加预配置的Maven Central 仓库
Maven Central的URL是 http://repo1.maven.org/maven2
,gradle提供了一种快捷的方法来声明之,而不必每次写URL。
repositories {
mavenCentral()
}
添加预配置的Maven Local仓库
repositories {
mavenLocal()
}
- 默认在
<USER_HOME>/.m2/repository
目录下是可用的
添加一个自定义的Maven仓库
首先被添加的仓库要遵循标准的工件存储模式,其次仓库可以被正常访问。Gradle API支持两种方式来配置一个自定义仓库:maven() 和 mavenRepo()。
repositories{
maven {
name 'Company Maven Repository'
url 'http://XXXXXXXXX'
}
}
其余的可用的配置选择可以查看文档
Ivy仓库
Maven仓库中的工件必须以一种标准的布局存储,任何结构偏差都可能导致依赖关系发生错误。Ivy仓库可自定义布局,在Ivy仓库中,依赖元数据被储存在ivy.xml文件中。声明一个Ivy仓库需要除了需要定义URL外,还需要声明工件和元数据的布局模式
repositories{
ivy{
url 'http://XXXXXX'
layout 'pattern', {
artifact '[organisation]/[module]/[revision]/[artifact]-[revision].[ext]'
ivy '[organisation]/[module]/[revision]/ivy-[revision].xml'
}
}
}
flat目录仓库
最基本的仓库形式,只包含JAR文件没有元数据。
语法如下:
repositories {
flatDir(dir: "$dirString" , name: "$nameString")
}
声明依赖时不可以声明group属性
dependencies{
compile name: "$nameString" , version: "$versionString"
compile ":$nameString:$versionString"
}