Gradle学习(五)——依赖管理基础

原创 2017年12月22日 16:40:42

转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/78874802

什么是依赖管理

粗略的说,依赖管理就干两件事:1.Gradle需要知道项目跑起来需要哪些玩意,并且按顺序找到它们,并把他们导入到工程中。2.Gradle还需要把项目的输出上传到其他地方。我们把这些需要上传的文件叫做产出。

大多数项目都不是完全独立的,在运行和测试过程中都需要额外的第三方包,这些第三方的包就构成了依赖关系.Gradle允许你声明你需要哪些依赖,然后Gradle就会找这些依赖,并把它们加到你的编译环境,运行环境或者测试环境中。这些依赖可能在Ivy或者Maven的远程仓库,或者是本地目录中,或者是多个项目中直接的相互依赖,我们把这个过程叫做依赖解析。

这些导入的依赖往往还有它自己的依赖,Gradle也会帮你把依赖的依赖导入进来,这就是传递依赖。

这个插件是Gradle对ant一个更优的扩展,ant仅仅可以指定绝对或者相对路径的jar。Gradle仅仅需要你声明依赖的名词版本号等,它就会自己帮你去找,当然你也可以在ant中增加Ivy或者Maven插件,但是明显Gradle使用起来更加方便。

大部分项目的目的都是产生一些文件,然后这些文件可以在项目外部使用,比如你的项目是一个java的lib库工程,那么你的工程最终会生成项目的jar文件,源代码的jar文件,还有一些doc,然后需要把他们发布的其他地方。这些输出的文件构成了项目的产出,Gradle会负责这个重要的过程。你需要声明你的产出,gradle会构建并发布它们。产出具体到底是什么取决你自己,你可以copy这些文件到本地的一个目录,也可能把它们上传到Ivy或者Maven库,还有就是把他们作为同个root项目下的其他子项目的依赖,这个过程我们可以叫做发布

声明依赖

我们来看下依赖是如何声明的,以下是个例子:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.jsoup', name: 'jsoup', version: '1.11.2'
    testCompile group: 'junit',name:'junit',version: '4.+'
}

我们来看发生了什么,首先在运行时环境和测试环境中都需要jsoup-1.11.2,然后在测试环境需要junit,而且要4.0版本及以上,而且声明了要到maven中心库去找。

依赖配置

配置其实都是在声明依赖和产出,这些配置主要有三个目的:

  • 声明依赖
    这个插件可以在定义的任务的执行期间,用户非常容易的使用为了各种目的定义的子项目或者第三方插件去构建项目。
  • 依赖解析
    这个插件可以去找到任务中定义的各种输出,通常是去下载
  • 为使用者暴露产出
    这个插件可以为使用者暴露那些产出可以生成并使用

各种各样的插件都有自己的一套扩展的依赖配置,比如java插件,groovy插件

外部依赖

你可以定义各种各样的依赖,其中的一种叫做外部依赖,这种依赖是在当前构建之外的,可能是个远程库,比如Ivy或者Maven的中心库,或者公司的Ivy或者Maven库,也可能是本地的一个文件夹
还是刚才的例子:

dependencies {
    compile group: 'org.jsoup', name: 'jsoup', version: '1.11.2'
}

一个外部依赖由group,name,version属性,在某些依赖仓库下,groupversion是可选的,你还可以用group:name:version的方式使用缩写:

dependencies {
    compile 'org.jsoup:jsoup:1.11.2'
}

仓库

Gradle需要在仓库里找依赖,仓库就是一个由group,name,version组织的文件的集合,gradle支持多种格式的仓库,比如Ivy和Maven,也可以通过不同的方式访问仓库,比如通过Http或者本地文件系统。

默认Gradle是不带任何仓库配置的,你需要手动定义最少一个可以找到你的外部依赖的仓库,例子中是maven仓库:

repositories {
    mavenCentral()
}

还有jcenter也可以

repositories {
    jcenter()
}

现在有了docker神器,自己用nexus搭个maven库也是很方便的。
一行命令安装启动docker run -d -p 8081:8081 --name nexus sonatype/nexus3
gradle配置自己的maven仓库

repositories {
    maven {
        url 'http://127.0.0.1:8081/repository/sweetop-public/'
    }
}

一个项目可以指定多个仓库,Gradle会按照顺序查找,找到就会停止查找。

发布产出

依赖配置也可以用来发布项目的产出,使用插件就可以完成发布了,但是还是要你告诉Gradle发布的url和账号密码。

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url:'http://127.0.0.1:8081/repository/sweetop/') {
                authentication(userName:'admin',password:'admin123')
            }
        }
    }
}

当你运行gradle uploadArchives时,Gradle会帮你打包jar,并且生成pom.xml文件,最后上传到指定的url

版权声明:本文为博主原创文章,未经博主允许不得转载。

Gradle笔记——依赖管理基础

1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件;二是发布,即构建完成后上传到某个地方。 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年11月06日 23:40
  • 10487

Gradle教程-依赖管理基础

This chapter introduces some of the basics of dependency management in Gradle. 本章将会介绍一些有关Gradle依赖管理...
  • u013474104
  • u013474104
  • 2015年10月20日 07:37
  • 445

Gradle第八章:依赖管理基础

8.1. 神马是依赖管理? 8.1. What is dependency management? 通俗来讲,依赖管理由如下两部分组成.首先,Gradle需要知道项目构建或运行...
  • kaka735
  • kaka735
  • 2015年05月25日 17:36
  • 275

gradle 打印依赖树

./gradlew app:dependencies 通过依赖树具体排查, 找到问题根源,排除掉 ./gradlew dependencies -q --configuration compile...
  • yuanxw44
  • yuanxw44
  • 2017年04月19日 00:05
  • 4191

gradle 去除传递依赖

transitive = false
  • cuixuefeng1112
  • cuixuefeng1112
  • 2015年09月15日 17:40
  • 435

Gradle 依赖管理

Gradle 管理好依赖的方式
  • tyzlmjj
  • tyzlmjj
  • 2017年04月12日 09:11
  • 914

Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)

转载:http://www.cnblogs.com/gzdaijie/p/5296624.html 目录 1.添加依赖包名 1.1 依赖类型 1.2 声明依赖 1.3 添加java依...
  • tiantaiaiqing
  • tiantaiaiqing
  • 2016年11月02日 21:53
  • 3680

使用Gradle命令查看项目中库的依赖关系

在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系。同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题。...
  • Jason847
  • Jason847
  • 2017年08月07日 15:45
  • 2208

gradle新建工程,多项目依赖,聚合工程

感谢gradle完全的文档。开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵。 gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二。...
  • w8452960
  • w8452960
  • 2016年11月30日 23:48
  • 9745

Gradle解决依赖冲突

问题描述   有时候项目依赖的com.android.support:support-v4的版本会遇到和其他依赖库中com.android.support:support-v4的版本发生冲突的情况。例...
  • hejun1218
  • hejun1218
  • 2017年07月21日 08:48
  • 517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle学习(五)——依赖管理基础
举报原因:
原因补充:

(最多只允许输入30个字)