首页 > 代码库 > Gradle 教程说明 用户指南 第8章依赖管理基础

Gradle 教程说明 用户指南 第8章依赖管理基础

8.1 什么是依赖管理?

依赖管理非常粗略地分为两部份:

· build 依赖自什么东西

· build 发布什么东西


8.2 声明你的依赖

让我们来看看一些依赖声明。这是一个基本构建脚本:

例,声明依赖
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 依赖配置

一个配置是一个简单的命名集的依赖。我们将把它们作为依赖的配置。

你可以用它们来定义项目的外部依赖。正如我们将在后面看到,他们还用定义项目的发布。


Java插件定义了一些标准配置。这些配置代表了Java插件使用的类路径。下面列出一些:

compile
编译source code 需要的依赖。

runtime
在运行时所必需的产生classes的依赖关系。默认情况下,还包括编译时的依赖。

testCompile
编译该项目的测试源码 所需要的依赖。默认情况下,还包括编译产生classes和编译时的依赖。

testRuntime
运行测试需要的依赖。默认情况下,还包括编译,运行和测试编译依赖。



8.4 外部依赖

有多种类型的依赖,你可以定义。

外部依赖:依赖于当前构建工程之外的一些文件,并且是存储在仓库中的,比如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在一个库中寻找外部依赖。存储仓库仅是一个文件集合,由group、name、version组成。

Gradle了解几种不同的储存库格式,如Maven和Ivy,和访问资源库的几种不同的方法,如使用本地文件系统或HTTP。


默认情况下,Gradle没有定义任何资源库。您需要定义至少一个,然后才能使用外部依赖。


例,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"
    }
}

一个项目可以有多个存储库。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/")
        }
    }
}

Gradle 教程说明 用户指南 第8章依赖管理基础