gradle构建脚本基础
1. gradle常用命令
//列出项目的所有属性. 这样你就可以看到插件加入的属性以及它们的默认值.
gradle properties
//列出项目的所有任务
gradle -q tasks --all
//列出所有项目
gradle -q project2. 字符串
' ' 仅仅表示一个字符串
" " 字符串拼接,可以拼接变量${变量},也可以拼接任务$$任务
''' ''' 可以用来换行
3. 定义常量
一个项目对应一个project实例,gradle根据build.gradle配置内容实例化project实例
project属性有group,name,version
方法有apply ,repositories,dependencies,task
属性的其他配置方式可以通过 : ext , gradle.properties
4. 定义任务
快捷的定义方式,使用<< 代替 doLast{}
<< 操作符是 doLast 的简单别称.
默认任务定义,调用任何任务都会执行的任务,没有<< 也米有doLast{}
声明任务之间的依赖
intro 依赖于 hello, 所以执行 intro 的时候 hello 命令会被优先执行来作为启动 intro 任务的条件.
在加入一个依赖之前, 这个依赖的任务不需要提前定义
动态任务
下面的times是遍历,counter是遍历的变量名
5. 使用插件
6. 使用仓库
7. 添加依赖
8. 定制项目
9. 上传jar包
也可以使用maven-publish插件
10. 多项目构建
11. 项目之间的依赖
12. 解决版本冲突
查看依赖报告
排除传递性依赖
强制指定一个版本
groovy默认使用最高版本帮助我们解决版本冲突
13. 多项目构建-公共配置
allprojects对所有的项目有效
subprojects对所有的项目有效也可以个性化定制
属性也可以定义在gradle.properties
14. 多项目构建-独享配置
在父项目bulid.gradle中配置子项目
15. 多项目构建-多环境配置
http://www.infoq.com/cn/articles/Gradle-application-in-large-Java-projects/
15-1. 通过指定不同的资源文件目录
resources: 通用配置放在这儿
resources-dev: 开发环境配置
resources-prod: 生产环境配置
gradle war: 这个是用来打测试的 war 包,采用的是 resources-dev。
gradle release: 这个才是用来打生产用的 war 包,采用的是 resources-prod。
15-2. 传统的properties文件
15-3. config.groovy配置文件
16. 构建脚本的依赖
除了项目需要依赖之外,构建脚本本身也可以有自己的依赖。当使用一个非Gradle官方提供的插件时,就需要在构建脚本里指定其依赖,当然还需要指定该插件的Repository。在Gradle中,使用buildscript块为构建脚本配置依赖。
比如在项目中使用cucumber-JVM作为项目BDD工具,而Gradle官方没有提供它的插件,好在开源社区有人提供cucumber的插件。在构建脚本中添加如下代码:
17. apply其他Gradle文件
当一个项目很复杂的时候,Gradle脚本也会很复杂,除了将子项目的配置移到对应项目的构建脚本之外,还可以可以按照不同的功能将复杂的构建脚本拆分成小的构建脚本,然后在build.gradle里使用apply from,将这些小的构建脚本引入到整体的构建脚本中去。比如在一个项目中既使用了Jetty,又使用了Cargo插件启动JBoss,就可以把他们分别提到jetty.gradle和jboss.gradle,然后在build.gradle里使用如下的代码将他们引入进来:
18. 定义资源目录
19. gradle三大脚本
Type of script
Delegates to instance of
脚本名称
脚本位置
Build script
Project
build.gradle
项目路径下
Init script
Gradle
xxx.gradle 例如buildScan.gradle
init.d
Settings script
Settings
settings.gradle
root项目下
全局配置 : 在gradle安装目录下../gradle-3.5/init.d
用户配置 : 在用户主目录下../.gradle/init.d
20. -P和-D
在命令行中通过-D或者-P给Gradle实时创建属性。 -D属性会被传送给启动Gradle的jvm,作为一个系统属性被jvm使用。-P属性则会被直接加载到Gradle领域对象上。
Last updated
Was this helpful?