gradle学习笔记(下)
来源:互联网 发布:服务器端 语言 python 编辑:程序博客网 时间:2024/05/22 14:18
构建脚本
group 分组 name 名字 version版本 用来确定依赖的坐标
build.gradle 中常用方法 apply[所需插件]、dependencies[所需依赖]、repositories[指定依赖仓库],task[自定义任务]
属性的配置方式 ext、 或者建立gradle.properties文件来声明属性
taskdependsOn 声明任务依赖于上一个任务动作[会先执行所依赖的任务] 一个任务包含多个任务动作 doFirst[任务动作列表前添加动作]、doLast<<[任务动作列表后添加动作] 一个任务可以包含多个doFirst和doLast 自定义任务名称 存在于other 中。
构建生命周期: 初始化(初始化有哪些项目会添加到初始化中)->配置(确定执行动作顺序)->执行(执行动作代码)
也有提供初始化执行后执行定义代码 也有配置后执行自定义代码 …… 具体查看官方文档
依赖管理 :
工件坐标 :项目名 、模块名、版本号
常用仓库:mavenLocal(自己本地仓库)/mavenCentral/jcenter (公网的公共仓库,可以下载jar也可以自己上传jar)
自定义maven仓库 构建自己的私服
文件仓库:本地机器的路径也可以作为仓库
下载jar包顺序是按照配置文件中声明的仓库顺序来查找,如果查找到了 即下载 不继续往下查找
依赖传递性: A依赖B B依赖C 则A就依赖C 依赖阶段: compile runtime 编译依赖的运行时都会依赖 运行时依赖的编译时不一定依赖 运行时依赖扩于编译时依赖 比如jdbc的驱动类是属于运行时依赖,因为我们源码有它的接口,只需要运行的时候调用具体实现类即可 当然如果无法区分编译依赖和运行依赖,统一使用编译依赖 也没错。 testCompile testRuntime 测试时依赖的源码不一定依赖,但是源码依赖的测试一定依赖 版本冲突: gradle 默认以当前冲突中最高版本来解决版本冲突 ,所以一般不需要我们来关注 //修改版本冲突默认策略 , 这样就能发现出现版本冲突了 configurations.all{ resolutionStrategy{ failOnVersionConflict() } } 冲突解决方式1;排除低版本依赖 //排除传递性依赖 compile('org.hibernate:hibernate-core:3.6.3.Final'){ exclude(group:'org.slf4j',model:'slf4j-api') } 冲突解决方式2: 强制指定各个冲突jar依赖的某个版本 (在修改版本冲突策略中加入force方法) configurations.all{ resolutionStrategy{ failOnVersionConflict() //指定该依赖统一都使用这个版本 force 'org.slf4j:slf4j-api:1.7.22' } } } 默认解决方式: 使用冲突中最高版本jar
多模块构建
settings.gradle 文件只能表示该父项目包含哪些模块
模块间的依赖:
dependencies {
//该模块依赖了modle模块(具有传递性依赖)
compile project (‘:modle’)
compile ‘org.codehaus.groovy:groovy-all:2.3.11’
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.12’
}
根项目中的build.gradle文件中 allprojects{ //指定所有子项目依赖的插件 apply plugin: 'java' sourceCompatibility=1.8 apply plugin: 'groovy' } //为所有子模块配置 subprojects{ //指定仓库 repositories { //调用project的空参数方法 // maven{ // // url:'私服地址' // } mavenLocal() mavenCentral() } //配置公共依赖 dependencies { compile 'org.codehaus.groovy:groovy-all:2.3.11' compile 'ch.qos.logback:logback-classic:1.2.1' testCompile group: 'junit', name: 'junit', version: '4.12' } }web子模块build.gradle 文件中 dependencies { //依赖service模块 compile project(':Service') } 统一配置管理 在根项目下建立gradle.properties文件 可以定义子模块的版本信息 #定义子模块中的统一属性 group = 'demo' version = '1.0-SNAPSHOT' 然后可以删除子模块中的group和version定义 根目录的一些任务 比如clean 它会执行整个子模块所有的clean任务 而子模块的clean任务只会执行和它相互关联的clean任务
自动化测试
建立garadle契约式目录
会在构建的时候自动执行测试方法 通过则继续构建 失败就报错
发布项目:
在根目录添加以下配置 gradle命令的根项目中会出现publish类型的一系列命令 可以执行发布工作
//发布到远程仓库的插件apply plugin: 'maven-publish'publishing { //myPublish 是自己可以定义的 publications { mavenJava(MavenPublication) { //将那个模块或者项目 输出发布到远程仓库 groupId 'demo' artifactId 'demo' version '1.0-SNAPSHOT' from components.java } } //指定发布的仓库 repositories{ mavenLocal() } //指定发布的仓库 可以指定多个, 每个将会在gradle命令中多一个发布到不同库的命令// repositories{// maven{// //远程名字// name 'myRepo'// //远程地址// url ''// }// }}
- gradle学习笔记(下)
- Gradle学习笔记 Gradle命令行
- gradle学习笔记
- Gradle学习笔记
- Gradle学习笔记
- gradle学习笔记
- gradle androidStudio 学习笔记
- Gradle学习笔记
- Gradle 学习笔记
- gradle学习笔记
- Gradle学习笔记
- gradle 学习笔记(一)
- Gradle学习笔记
- gradle 学习笔记
- 学习Gradle笔记
- gradle学习笔记(五) Gradle初步理解
- Gradle学习笔记 Gradle介绍和安装
- Gradle学习笔记 使用Gradle Wrapper
- ThinkPHP 3.1.2 视图
- 使用ajax异步请求数据,并展示在html中
- 怎样退出终止App
- HDU 1576-A/B(扩展欧几里得算法)
- 详解js闭包
- gradle学习笔记(下)
- JSP--整合SiteMesh02
- 魔法工会
- vin码OCR识别解析查询
- volatile关键字
- C++中的四类强制转换?
- java学习(10) lambda表达式
- 系统学习java高并发系列三
- Debug与Release的区别