gradle项目构建学习笔记

简介:自动化构建工具的作用:机器自动进行依赖管理,测试、打包、发布。
主流的构建工具有:ant、maven、Gradle。
ant主要是编译、测试、打包;maven在ant基础上加入了依赖管理和发布;gradle结合了两者的优点–Ant的灵活性和Maven的功能。 gradle不使用xml文件,它使用基于Groovy的DSL。由于该语言专门用于解决特定的域问题,因此这导致较小的配置文件较少混乱。Gradle的配置文件通常称为build.gradle。
安装
1.确保已经安装jdk
2.从gradle官网下载gradle ,链接为:link.
在这里插入图片描述
在这里插入图片描述
3.下载后解压,配置环境变量,在命令行窗口输入gradle -v确保安装成功。
Groovy:是基于java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程 ,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
与java比较
1.groovy完全兼容java语法
2.分号是可选的
3.类、方法默认是public的。
4.编译器给属性自动添加getter/setter方法
5.属性可以直接用点号获取
6.最后一个表达式的值会被作为返回值
7.==等同于equals(),不会有NullPointerExceptions
Groovy高效特性
1.assert语句
2.可选类型
3.可选括号
4.字符串
5.集合API
6.闭包
构建一个java项目
1.file->new->project,选择gradle,java,jdk选择自己安装的。然后next
在这里插入图片描述
2.填上groupId,Artifactid用来唯一定位你的项目,然后next
在这里插入图片描述
3.如下图勾选,然后next
在这里插入图片描述
4.填写项目名和项目位置,点击finish。
在这里插入图片描述
项目的目录结构为
在这里插入图片描述
项目目录结构和maven的目录结构是一样的,我们构建时可能不是这样的,可以手动创建。
构建完成后点击右侧工具栏的gradle可以看到:
在这里插入图片描述
相信对于maven使用者很熟悉这个结构吧。
构建块:gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务。在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个依赖关系图来确保他们的执行顺序。
任务项目关系图
在这里插入图片描述
项目(project):一个项目代表一个正在构建的组件(比如一个jar文件),当构建启动后,Gradle会基于build.gradle实例化一个org.gradle.api.Project类,并且能够通过project变量使其隐式可用。属性有group,name,version;方法有:apply,repositories,dependencies,task。属性的其他配置方式可以通过:ext,gradle.properties

任务(task):任务对应org.gradle.api.Task。主要包括任务动作和任务依赖。任务动作定义了一个最小的工作单元。可以定义依赖于其他任务、动作序列和执行条件。任务依赖:执行task之前需要执行dependsOn指定的任务;一个Task包含若干Action,Task有doFirst和doLast(<<)两个函数,用于添加需要最先执行的Action和需要和需要最后执行的Action。Action就是一个闭包。闭包,英文叫Closure,是Groovy中非常重要的一个数据类型或者说一种概念。
在build.gradle下写自定义任务
在这里插入图片描述
可以在other下看见
在这里插入图片描述
执行后
在这里插入图片描述
在src下生成了目录文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
构建生命周期: 初始化,配置,执行

task loadVersion{
	project.version='1.0'
}//配置阶段
task loadVersion <<{
  print 'success'
}//执行阶段

依赖管理:几乎所有的基于jvm的软件项目都需要依赖外部库来重用现有的功能。自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖带来的版本冲突。
常用仓库:mavenLocal/mavenCentral/jcenter,自定义maven仓库,文件仓库
自动化依赖管理:
在这里插入图片描述
依赖阶段配置:compile,runtime,testCompile,testRuntime
依赖关系
在这里插入图片描述
解决冲突
1.查看依赖报告
在这里插入图片描述
2.解决冲突:

	configurations.all{
  	resolutionStrategy{
  		failOnVersionConflict()//修改默认解决策略
  		force 'org.slf4j:slf4j-api:1.7.24'//强制指定一个版本
  }
}
//排除传递性依赖
compile('org.hibernate:hibernate-core:3.6.3.Final'){
  exclude group:"org.slf4j",module:"slf4j-api"
  //transitive = false
}

多项目构建
项目间依赖

	dependencies {
 		 compile project(":model")
  	}

项目测试

  dependencies {
 		 testCompile 'junit:junit:4.11'
  	}

1.任何继承自junit.framework.TestCase或groovy.unit.GroovyTestCase的类
2.任何被@RunWith注解的类
3.任何至少包含一个被@Test注解的类
都会被测试发现
发布
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值