Gradle的脚本文件就是Groovy文件,所以合法的Goovy代码都可以出现在脚本中。
最简单的添加第三方依赖方法是,直接在dependencies中:
dependencies { compile 'log4j:log4j:1.2.16' compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' }
如果工程有很多的依赖,使用上面的方法会显得比较麻烦,所以利用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中就可以了。
有时候需要修改某个依赖的版本,例如上面的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']的值。