Gradle之依赖管理
Gradle之依赖管理
编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过!
8.1. What is dependency management?何谓?为何?
依赖管理大致有两块:首先Gradle需要找到你工程需要的东西,这些东西就是所谓的“依赖”。另外Gradle需要构建和上传你工程的产出,这就是所谓的发行。让我们来仔细看看它们:
大 部分工程都不太可能完全自给自足,一把你都会用到其他工程的文件。比如我工程需要Hibernate就得把它的类库加进来,比如测试的时候可能需要某些额 外jar包(jdbc驱动或者Ehcache jar包)。这些文件就是工程的依赖。Gradle需要你告诉它工程的依赖是什么,它们在哪,然后帮你加入构建中。依赖可能需要去远程库下载,比如 Maven 或者 Ivy 库。也可以是本地库,甚至可能是另一个工程。我们称这个过程叫“依赖解决”(dependency resolution).
通常情况下,依赖本身也有依赖。比如Hibernate核心库就依赖一些其他类库。当Gradle测试你工程的时候,它也需要找到这些间接依赖。我们称之为“传递依赖”( transitive dependencies).
大部分工程构建的主要目的是脱离工程使用。比如生成jar包,包括源代码、文档等,然后发布出去。这些个玩意构成了项目的发行内容。Gradle也会替你分忧这个工作。你声明了要发行,Gradle会构建并且发行。你可能会把文件拷贝到本地某处,或者上传到远程 Maven 或 Ivy 库,甚至在其他项目里使用。整个这个都是所谓的发行。
8.2. Declaring your dependencies依赖声明
我们看一下简单的依赖声明脚本:
Example 8.1. Declaring dependencies
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.+'
- }
这 是在搞毛?这段脚本说的是:1,工程在编译时需要Hibernate core 3.6.7.Final。这样Hibernate核心库和它的依赖库都会引入。2,测试的时候需要4.0以上版本的junit。另外就是这些包都要从 Maven central 库里查找。接下来咱们详细看下。
8.3. Dependency configurations依赖配置
Gradle的依赖会分组为“配置”(configurations) 。一个配置就是一套具名依赖,称为“依赖配置”。你可以声明外部依赖,后面我们会看到。
Java插件定义了一些标准配置,形成了插件本身的类路径库。下面列一下,你可以自己去这看:Table 23.5, “Java plugin - dependency configurations”.
compile
该依赖对于编译发行是必须的。
runtime
该依赖对于运行时是必须的,默认包含编译时依赖。
testCompile
该依赖对于编译测试是必须的,默认包含编译产品依赖和编译时依赖。
testRuntime
该依赖对于测试是必须的,默认包含编译、运行时、测试编译依赖。
定制化配置请看: Section 50.3, “Dependency configurations”
8.4. External dependencies外部依赖
依赖类型有多种,现在说一种外部依赖(external dependency)。这种依赖的对象不在工程内,甚至是在远程库里。
定义外部依赖需要如下加入到依赖配置:
Example 8.2. Definition of an external dependency
build.gradle
- dependencies {
- compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
- }
外部依赖使用group, name 和version 属性。根据使用库的不同,group 和version可能是可选的。有一种快捷方式声明依赖:
Example 8.3. Shortcut definition of an external dependency
build.gradle
- dependencies {
- compile 'org.hibernate:hibernate-core:3.6.7.Final'
- }
更多信息请看 Section 50.4, “How to declare your dependencies”.
8.5. Repositories库
Gradle是咋定位外部依赖呢?答案是“库”(repository)。一个库其实就是一大堆文件,不过是用group, name 和version组织好的。Gradle支持很多库,比如 Maven 和Ivy;还只存多种方式连接到库,比如本地系统或者 HTTP.
Gradle默认没定义库。你使用前需要至少定义一个,比如Maven central 库:
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"
- }
- }
你可以自己建个库然后指定:
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 50.6, “Repositories”.
8.6. Publishing artifacts发布文件
依赖配置也用来发布文件,这些文件称为“发布文件”(publication artifacts),或干脆就叫“发件”(artifacts)(不会翻译,谁来纠正一下。。)
一般的,插件会做很多发件定义工作,所以我们不用干什么。不过需要告诉Gradle发件要发布到哪里。方法是把库附在 uploadArchives 任务里。比如我们要发布到远程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包,同时生成并上传一个ivy.xml 文件.
可以发布到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 51, Publishing artifacts.
原文地址 http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
Gradle之依赖管理的更多相关文章
- 在Eclipse中使用建立使用Gradle做依赖管理的Spring Boot工程
前述: Gradle存在很长时间了,以前只知道Maven和ivy ,最近才知道有这个存在,因为以后要用这个了; 所以,要先学会怎么用这个工具,就从建立一个简单工程开始! 实际上以前是见过Gradle的 ...
- Gradle Maven 依赖管理
仓库管理简介 本质上说,仓库是一种存放依赖的容器,每一个项目都具备一个或多个仓库. Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 我们来看一下,对于每一 ...
- Gradle笔记——依赖管理基础
1. 什么是依赖管理 依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件:二是发布,即构建完成后上传到某个地方. 1.1 依赖 大部分的项目都需要第三方库类或项目文件,这些文件就是项 ...
- gradle入门(1-2)gradle的依赖管理
Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 一.添加仓库 1.添加Ivy仓库 1.1.通过URL地址添加一个Ivy仓库 我们可以将以下代码片段加入到b ...
- Android Gradle统一依赖管理
目的: 避免在依赖包出新版本时,需要对每个module中的build.gradle文件都进行修改(如appcompat-v7包),使用这种方式即只需一次修改. 方法一 在项目的根目录创建一个gradl ...
- Liferay7 BPM门户开发之43: Gradle依赖管理
进入liferay v7.0,官方推荐使用Gradle进行依赖管理和发布,所以必须知道Gradle的用法,网上资料很多,不赘述 只写依赖管理的分类 一般用外部仓库依赖,也可以用本地文件依赖(依赖本地j ...
- Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)
开发任何软件,如何管理依赖是一道绕不过去的坎,软件开发过程中,我们往往会使用这样那样的第三方库,这个时候,一个好的依赖管理就显得尤为重要了.作为一个自动构建工作,Gradle对依赖管理有着很好 ...
- Gradle学习系列之七——依赖管理
在本系列的上篇文章中,我们讲到了如何使用java Plugin,在本篇文章中,我们将讲到Gradle的依赖管理. 请通过以下方式下载本系列文章的Github示例代码: git clone https: ...
- Gradle系列教程之依赖管理(转)
转自Lippi-浮生志 :http://ezlippi.com/blog/2015/05/gradle-dependency-management.html 这一章我将介绍Gradle对依赖管理的强大 ...
随机推荐
- B - Ultra-Fast Mathematician
Problem description Shapur was an extremely gifted student. He was great at everything including Com ...
- Oracle性能优化——总体介绍
最近参加Oracle的培训,对Oracle有了更加深入的认识,在此做个学习总结. 1.Oracle数据库调优不能仅指望修改几项数据库参数就能有明显效果,问题更多出在应用方面,教育开发者正确地使用数据库 ...
- CI中的url相关函数以及路由设置和伪静态技术
当使用CI框架进行开发时,我们的一些数据传递的URL不应该写死,可以使用如下方法:比如说我们需要表单提交一个数据: 1.在controller控制器中我们需要先创建一个加载helper和视图的方法: ...
- 在MyEclipse中使用debug模式
转:http://blog.csdn.net/competerh_programing/article/details/6773371 1, 首先在一个java文件中设断点,然后运行,当程序走到断点 ...
- 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
上个帖子中, 我们创建了个发email的workflow. 但是我们邮件当中的tax 值是 hard code, 这在开发当中是不容许的. 那今天我们来把这个build in workflow用 in ...
- 操作ajax生成页面的一个问题
一般而言,js代码都放在页面的底部.在做项目的过程中,发现放在底部的代码没有执行,原来操作的是ajax生成的部分.这时候,页面加载js的顺序就要小心了.例子如下: <!doctype html& ...
- Python基础:条件判断 &&循环
1:条件判断 2:循环 2.1:for 2.2 while 小结: continue :跳出本次循环 进行下次循环, break :结束循环体.
- oracle 删除表空间及数据文件方法
oracle 11g版本,创建数据库表空间,默认单个数据文件最大为32G,如果数据文件大于32G,可以增加数据文件. --删除空的表空间,但是不包含物理文件 drop tablespace table ...
- Centos 7 安装图形化界面
Centos 7 默认是没有图形化界面的,但我们很多人在习惯了 Windows 的图形化界面之后,总是希望有一个图形化界面从而方便我们使用,这里介绍一下 CentOS7安装图形化桌面系统的方法. 一. ...
- Teradata在大数据管理与分析领域连续18年评测排名第一
Gartner 魔力象限介绍 Gartner(高德纳)全球最具权威的IT市场研究与顾问咨询公司,他总是不停地推出IT行业的各种报告以及著名的Gartner魔力象限. Gartner魔力象限通常从两个方 ...