文档章节

使用Gradle管理第三方依赖

markdrord
 markdrord
发布于 2015/03/02 18:13
字数 641
阅读 98
收藏 0
点赞 0
评论 0

Gradle的脚本文件就是Groovy文件,所以合法的Goovy代码都可以出现在脚本中。

方法一:直接添加依赖

最简单的添加第三方依赖方法是,直接在dependencies中:

dependencies {
	compile 'log4j:log4j:1.2.16'
	compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}

方法二:利用Map管理依赖

如果工程有很多的依赖,使用上面的方法会显得比较麻烦,所以利用Groovy的Map会更加方便:

libraries=[:]
libraries.log4j = 'log4j:log4j:1.2.16'
libraries.dom4j = 'dom4j:dom4j:1.6.1'
libraries.cglib = 'cglib:cglib:2.2'
libraries.javassist = 'javassist:javassist:3.12.1.GA'
libraries.ehcache = 'net.sf.ehcache:ehcache-core:2.4.1'
libraries.paranamer = 'com.thoughtworks.paranamer:paranamer:2.3'
libraries['commons-lang'] = 'commons-lang:commons-lang:2.5'
libraries['commons-beanutils'] = 'commons-beanutils:commons-beanutils:1.8.3'
libraries['commons-codec'] = 'commons-codec:commons-codec:1.5'
libraries['commons-digester'] = 'commons-digester:commons-digester:2.1'
libraries['commons-jexl'] = 'org.apache.commons:commons-jexl:2.0.1'
libraries['commons-dbcp'] = 'commons-dbcp:commons-dbcp:1.4'
libraries['commons-fileupload'] = 'commons-fileupload:commons-fileupload:1.2.1'
libraries['commons-io'] = 'commons-io:commons-io:2.0.1'
libraries['h2'] = 'com.h2database:h2:1.3.158'
libraries['bliki-core'] = 'info.bliki.wiki:bliki-core:3.0.16'

libraries += [
	'spring-core':            'org.springframework:spring-core:3.1.0.RELEASE',
	'spring-beans':           'org.springframework:spring-beans:3.1.0.RELEASE',
	'spring-context':         'org.springframework:spring-context:3.1.0.RELEASE',
	'spring-context-support': 'org.springframework:spring-context-support:3.1.0.RELEASE',
	'spring-asm':             'org.springframework:spring-asm:3.1.0.RELEASE',
	'spring-expression':      'org.springframework:spring-expression:3.1.0.RELEASE',
	'spring-web':             'org.springframework:spring-web:3.1.0.RELEASE',
	'spring-webmvc':          'org.springframework:spring-webmvc:3.1.0.RELEASE',
	'spring-aop':             'org.springframework:spring-aop:3.1.0.RELEASE',
	'spring-jdbc':            'org.springframework:spring-jdbc:3.1.0.RELEASE',
	'spring-orm':             'org.springframework:spring-orm:3.1.0.RELEASE',
	'spring-tx':              'org.springframework:spring-tx:3.1.0.RELEASE',
]

libraries +=  [
	'dorado-core':        'com.bstek.dorado:dorado-core:7.0.3-SNAPSHOT',
	'dorado-ide-support': 'com.bstek.dorado:dorado-ide-support:7.0.3-SNAPSHOT',
	'dorado-console':     'com.bstek.dorado:dorado-console:7.0.3-SNAPSHOT',
	'dorado-hibernate':   'com.bstek.dorado:dorado-hibernate:7.0.3-SNAPSHOT',
	'dorado-chart':       'com.bstek.dorado:dorado-chart:7.0.3-SNAPSHOT',
	'dorado-desktop':     'com.bstek.dorado:dorado-desktop:7.0.3-SNAPSHOT',
	'dorado-htmleditor':  'com.bstek.dorado:dorado-htmleditor:7.0.3-SNAPSHOT',
]

dependencies {
	libraries.each { k,v ->
		compile(libraries[k])
	}
}

上面将所有的第三方依赖放在自定义的libraries变量中(类型为Map),通过在dependencies中遍历libraries添加到compile中。

通过上面的方法,如果新增一个依赖,那么只需要添加到libraries中就可以了。

方法三:利用Map管理依赖版本

有时候需要修改某个依赖的版本,例如上面的dorado-*或spring-*,如果将对dorado的依赖版本有7.0.3-SNAPSHOT修改为7.0.4-SNAPSHOT,那么修改dorado-core、dorado-ide-support等多个地方,如果能够只修改一个地方就好了,可以使用下面的方法:

libraries=[:]
versions=[:]

def library(lib, v) {
	String.format(lib, versions[v]);
}

versions['spring'] = '3.1.0.RELEASE'
libraries +=  [
	'spring-core':            library('org.springframework:spring-core:%s',            'spring'),
	'spring-beans':           library('org.springframework:spring-beans:%s',           'spring'),
	'spring-context':         library('org.springframework:spring-context:%s',         'spring'),
	'spring-context-support': library('org.springframework:spring-context-support:%s', 'spring'),
	'spring-asm':             library('org.springframework:spring-asm:%s',             'spring'),
	'spring-expression':      library('org.springframework:spring-expression:%s',      'spring'),
	'spring-web':             library('org.springframework:spring-web:%s',             'spring'),
	'spring-webmvc':          library('org.springframework:spring-webmvc:%s',          'spring'),
	'spring-aop':             library('org.springframework:spring-aop:%s',             'spring'),
	'spring-jdbc':            library('org.springframework:spring-jdbc:%s',            'spring'),
	'spring-orm':             library('org.springframework:spring-orm:%s',             'spring'),
	'spring-tx':              library('org.springframework:spring-tx:%s',              'spring'),
]

versions['dorado'] = '7.0.3-SNAPSHOT'
libraries +=  [
	'dorado-core':        library('com.bstek.dorado:dorado-core:%s',        'dorado'),
	'dorado-ide-support': library('com.bstek.dorado:dorado-ide-support:%s', 'dorado'),
	'dorado-console':     library('com.bstek.dorado:dorado-console:%s',     'dorado'),
	'dorado-hibernate':   library('com.bstek.dorado:dorado-hibernate:%s',   'dorado'),
	'dorado-chart':       library('com.bstek.dorado:dorado-chart:%s',       'dorado'),
	'dorado-desktop':     library('com.bstek.dorado:dorado-desktop:%s',     'dorado'),
	'dorado-htmleditor':  library('com.bstek.dorado:dorado-htmleditor:%s',  'dorado'),
]

上面通过versions变量和library方法,将我们关心的依赖的版本管理起来了。

如果需要修改依赖的dorado的版本,只需要修改versions['dorado']的值。


© 著作权归作者所有

共有 人打赏支持
markdrord
粉丝 1
博文 7
码字总数 2329
作品 0
浦东
技术主管
如何理解Gradle?Grade在Android的构建过程中有什么作用?动态修改AndroidManifest.xml.

如何理解Gradle? 1、首先Gradle是什么? Gradle是一个基于Groovy的打包、编译的工具,主要面向java应用。 2、Gradle在Android构建过程中有什么作用? Gradle是Android里最方便也是最好的用来...

小鹿啊小鹿
2017/12/21
0
0
Gradle依赖的统一管理

我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gradle使用起来简直太好用了,举个例子,我们想依赖个support-v4包,直接一句话: 不要太方便好么? 但是不知道你们发现...

不爱吃鱼的喵
2016/03/14
122
0
【转】GRADLE依賴的統一管理

我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gradle使用起来简直太好用了,举个例子,我们想依赖个support-v4包,直接一句话: compile ‘com.android.support:sup...

拉风的道长
2016/03/14
36
0
Resolved versions for app (25.3.1) and test app (25.4.0) differ

在運行項目的時候,遇到以下問題 經過多番查找,大致看来是 app中依赖库与test中依赖库版本不一致的问题,最后发现是因为 build.gradle 统一管理后,我在 Library的build.gradle中有测试包的...

奔跑的佩恩
01/03
0
0
Android studio gradle配置

Gradle 基本概念 首先我们学习几个gradle 的脚本语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android 。 build.gradle //设置脚本...

习惯_搬砖
2014/11/07
0
1
给 ANDROID 初学者的 GRADLE 知识普及

版权声明:本文为 stormzhang 原创文章,可以随意转载,但必须在明确位置注明出处!!! 1. 前言 前一段时间有人在我的邪教群里问「刚学 Android 不久,对 Gradle 不懂,看了很多资料依然一知...

SuShine
2016/09/08
29
0
寄Android开发Gradle你需要知道的知识

初识Gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和...

猴亮屏
05/22
0
0
Gradle之第三方library包含编译

Android项目常常包含有第三方的开源项目,这里介绍如何通过gradle编译打包。 假设当前项目中已经写好了一个gradle文件,在命令行下通过gradle build即可编译。编译之前也可以通过gradle clea...

苏谷子
2014/06/23
3K
0
Gradle 4.4 正式版发布,支持 Visual Studio 2017

Gradle 4.4 已正式发布,看看带来了哪些激动人心的改进: 支持 Visual Studio 2017,点此了解更多 Eclipse 插件现在提供单独的输出文件夹。这允许 Eclipse 插件提供更复杂的 classpath 管理。...

淡漠悠然
2017/12/12
2.2K
14
有关 Android Studio 重复引入包的问题和解决方案

随着产品功能需求的增加,我们开发的安卓项目不得不入引入越来越多的第三方库。这些三方库可能以 Jar 包的形式放置在 libs 目录下,可能以 Gradle 远程依赖的形式下载引入,也可能是以 Libr...

亦枫
2017/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
3分钟前
0
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
9分钟前
0
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
23分钟前
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
30分钟前
0
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
38分钟前
0
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
39分钟前
0
0
安装tensorflow-XXX报错

报错: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform. 解决: wget https://bootstrap.pypa.io/get-pip.py sudo python2.7 get-pip.py sudo p......

Yao--靠自己
42分钟前
0
0
JVM学习手册(一):JVM模型

一直从事JAVA开发,天天和JVM打交道,仔细想想对JVM还真的不是特别了解,实在是不应该.周六看了许多资料,也算有点心得,记录一下。 JVM内存模型分为5个区域:方法区,堆,虚拟机栈,本地方法栈,程序计...

勤奋的蚂蚁
今天
0
0
转行零基础该如何学Python?这些一定要明白!

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。...

猫咪编程
今天
2
0
205. Isomorphic Strings - LeetCode

Question 205. Isomorphic Strings Solution 题目大意:判断两个字符串是否具有相同的结构 思路:构造一个map,存储每个字符的差,遍历字符串,判断两个两个字符串中相同位置字符的差是否相同 Ja...

yysue
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部