目录

  • 文件目录仓库
  • Maven中央库
  • JCenter Maven repository
  • 本地 Maven 仓库
  • 自定义的Maven仓库


文件目录仓库

有些项目可能会更愿意在一个共享磁盘上存储依赖,或者作为项目源码的一部分作为一个二进制存储库的代替。
如果你想要使用文件系统目录作为仓库,只需要写如下:

repositories {
    flatDir {
        dirs 'lib'
    }
    flatDir {
        dirs 'lib1', 'lib2'
    }
}

这增加了存储库,用于查找一个或多个目录以查找依赖项。请注意,这种类型的存储库不支持任何元数据格式,如Ivy XML或Maven POM文件。相反,Gradle将根据artifacts的存在动态生成模块描述符(没有任何依赖信息)。然而,Gradle会优先使用其他存储库的meta-data对应的artifacts。例如,如果Gradle只在一个文件目录存储库中找到jmxri-1.2.1.jar,而在另一个支持元数据的存储库中找到jmxri-1.2.1.pom,那么它将使用第二个存储库来提供模块。

Maven中央库

repositories {
    mavenCentral()
}

JCenter Maven repository

Bintray 的 Jcenter是所有流行的Maven OSS工件的最新集合,包括直接发布给Bintray的artifacts

repositories {
    jcenter()
}

本地 Maven 仓库

gradle可以从本地maven仓库中获取可用依赖。

Gradle将已解析的依赖存储在它的缓存中。

在build.gradle中添加如下构建脚本声明本地maven缓存作为存储库:

repositories {
    mavenLocal()
}

Gradle使用与Maven相同的逻辑来标识本地Maven缓存的位置。如果在settings.xml中定义了本地Maven仓库位置,那么Gradle将使用这个位置。USER_HOME/.m2下的settings.xml将会覆盖M2_HOME/conf中的settings.xml。如果没有可获取的settings.xml,Gradle将默认使用USER_HOME/.m2/repository作为本地Maven仓库位置。

自定义的Maven仓库

大部分组织或者公司都会有自己的maven仓库并且只能通过内网访问。Gradle可以通过URL来声明Maven仓库。
对于添加自定义Maven仓库可以在build.gradle添加如下:

repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}

有些时候需要将POMs发布到一个地址,并且JARs和其他的artifacts在其他位置发布,对于这种情况你可以在build.gradle添加如下:

repositories {
    maven {
        // Look for POMs and artifacts, such as JARs, here
        url "http://repo2.mycompany.com/maven2"
        // Look for artifacts here if not found at the above location
        artifactUrls "http://repo.mycompany.com/jars"
        artifactUrls "http://repo.mycompany.com/jars2"
    }
}

Gradle将在第一个URL查找POM和JAR,如果没有找到JAR,那么将会使用artifactUrls来查找。