0104 gradle入门
背景
gradle的官网是 www.gradle.org,标题介绍是: accelerate developer productivity,翻译过来:提高开发者的生产率;
简要介绍:从手机app到微服务,从小的创业公司到大型企业,gradle帮助团队构建,自动化,交付更好更快的软件。
三大特征
- Build Anything(构建一切)
你可以选择使用Java,C++,Python语言,单仓库或者多仓库,gradle可以在任何平台上部署打包,这都是依赖于gradle的无比灵活来构建的;
- Automate Everything(自动化一切)
使用gradle丰富的API和成熟的插件生态,建模,集成,系统化各种软件。整合这些插件可以完成有目的的自动化。
- Deliver Faster(极速交付)
优雅,极速的构建,从编译忽略到高级的缓存,甚至更多,gradle追求持续的性能,保证你的团队可以持续交付;
安装步骤
我使用的macos,这里我采用下载最新的原生包来安装gradle到我的环境;
步骤如下:
- 进入你的工作目录:
cd ~ - 下载指令:
wget https://downloads.gradle-dn.com/distributions/gradle-6.0.1-all.zip - 解压:
unzip gradle-6.0.1-all.zip - 重命名:
mv gradle-6.0.1 gradle - 进入执行目录:
cd gradle/bin - 复制执行目录地址:
pwd,复制的路径假设为 /usr/tool/gradle/bin - 我使用的ohMyZSH , 所以我在 我的~/.zshrc下增加路径
EXPORT PATH=$PATH:/usr/tool/gradle/bin - 验证:
gradle,看到gradle的版本号标识安装成功; - 删除下载的包节约空间:
rm -rf /usr/tool/gradle-6.0.1-all.zip
开始教程
java开发者,主要关注的是java方面的构建,先把自己放空,抛掉maven,从0开始;
java application
基本的java开发;
步骤:
mkdir demo_gradle_application;cd demo_gradle_application;gradle init- 介绍一下目录

settings.gradle.kts 这里配置项目的名称;
build.gradle.kts 这里配置仓库,插件和依赖;

- 构建
gradlew build
- 测试
测试覆盖报告在

- 运行
./gradlew run最后看到打印出hello world表示成功!
成果:
- 如何使用gradle生成一个java application;
- 生成的代码结构;
- 如何执行gradle构建以及查看测试报告;
- 如何执行java应用使用run任务通过gradle插件;
java library
java库,可以被其它项目引用或者说复用;
步骤:
- gradle init , 选择 library ;
- 结构如上图;
同application类型;
settings.gradle.kts 主要设置项目的名字
build.gradle.kts主要配置插件,依赖仓库,依赖;
源码,测试目录同maven的约定;
- ./gradlew build 构建jar包;
- 定制jar包
定制版本号: 在build.gradle.kts中 增加版本号;
version = "1.0-SNAPSHOT"
然后执行打包,可以得到带版本的jar包;
定制jar包的 library name 和 library version;
在build.gradle.kts中
tasks{
jar{
manifest{
mapOf("Implementation-Title" to project.name ,
"Implementation-Version" to project.version
)
}
}
}
- 生成jar包,
./gradlew jar - 生成API文档 ,
./gradlew javadoc
成果:
- 生成了java库;
- 生成文件的目录结构;
- 执行构建并查看测试报告;
- 定制生成jar包的版本和name
- 生成API文档;
java web
使用gradle创建web项目;
gradle有一个war插件用来构建javaWEB应用,并提供了一个gretty查来用来测试和部署web应用到jetty或者tomcat中;例子展示了如何构建一个简单的webapp并部署到jetty使用gretty插件,你也可以学到如何写servlet的单元测试通过使用Mockit框架,并学到如何使用gretty和selenium写功能测试;
目录说明
- src/main/java java源码目录
- src/main/webapp 页面目录
- src/test/java 测试代码目录
步骤:
- 引入依赖;
- servlet的代码
- 引入页面代码
- 引入 gretty插件;
- 模拟测试servlet, 使用mockito;
- 模拟功能测试,使用 webdriverManager, selenium;
- 跑测试;
成果:
- 使用war插件来定义web应用;
- 添加servlet和JSP;
- 使用gretty插件部署应用;
- 使用mockit单元测试;
- 使用gretty和selenum进行功能测试;
代码:https://github.com/carterbrother/springbootpractice/tree/master/demo_gradle_webapp
java springboot
idea中使用gradle
原创不易,转载请注明出处。
0104 gradle入门的更多相关文章
- 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...
- 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld
在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...
- 项目自动化建构工具gradle 入门3——生一个exe的helloWorld
前两次呢,我们能够用一个外部的jar 来实现输出helloWorld.但问题是我每次都要用java -jar 来执行,这样我们自己玩还可以,让用户玩就不好了.所以我们生成一个exe给他们吧.这次我们仍 ...
- 项目自动化建构工具gradle 入门2——log4j输出helloWorld
上一章节呢,有一个能跑的程序了.但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点.比如使用log4j.直接上例子: 1进入D:\work\gradle\log目录 ,您电脑没 ...
- 【Gradle】Gradle入门
Gradle入门 配置Gradle环境 安装之前确保已经安装配置好Java环境,要求JDK6以上,并且在环境变量里配置了JAVA_HOME,查看Java版本可以在终端输入如下命令: java -ver ...
- gradle入门
gradle入门 简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...
- Java Gradle入门指南之内建与定制任务类(buildSrc、Groovy等)
上一篇随笔介绍了Gradle的安装与任务管理,这篇着重介绍Gradle的内建任务(in-built tasks)与自定义任务(custom tasks),借助Gradle提供的众多内建任务类型 ...
- 【Gradle教程】Gradle 入门
本文为我在学习群内分享时在B站直播分享时的文档,直播间地址 http://live.bilibili.com/22263819 PS:问一下,Linux下有什么好用的会议软件么? 知道的朋友烦请评论告 ...
- 项目自动化建构工具gradle 入门1——输出helloWorld
先来一个简单的例子,4个步骤: 1.进入D:\work\gradle\java 目录 ,您电脑没这目录? 那辛苦自己一级一级建立起来吧 新建文件build.gradle,文件内容是: apply p ...
随机推荐
- SpringBoot Controller找不到视图路径
在启动类加注解@ComponentScan("com.controller")即可,括号里表示Controller所在包名. 参考:https://blog.csdn.net/ji ...
- frp 配置
前言 对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一 ...
- Linux系统的发展历史和学习前景介绍
2020年了,我想来跟大家聊聊Linux运维这一行业,从几个方面说下行业的现状.如何学好Linux和如何成为专业运维人员以及云服务对于Linux运维的影响. 一.linux行业状况 我们都知道从199 ...
- 【PAT甲级】1013 Battle Over Cities (25 分)(并查集,简单联通图)
题意: 输入三个整数N,M,K(N<=1000,第四个数据1e5<=M<=1e6).有1~N个城市,M条高速公路,K次询问,每次询问输入一个被敌军占领的城市,所有和该城市相连的高速公 ...
- cookie、session、localStorage、sessionStorage的区别
cookie的机制 cookie是存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密. Cookie是服务器发 ...
- web前端面试第一次[addEventListenr();绑定事件]
//当一个元素同时处理多个函数,这里使用按钮 //addEventListener(string类型,处理函数,boolean); <input type="button" ...
- Day1-A-POJ-3295
由题意知,有5种操作,5个未知数,可0可1,一串操作问是否恒为1,最多100个字符,直接栈模拟所有情况即可 代码如下: int p, q, r, s, t; bool calculate(string ...
- 「CH6901」骑士放置
「CH6901」骑士放置 传送门 将棋盘黑白染色,发现"日"字的两个顶点刚好一黑一白,构成一张二分图. 那么我们将黑点向源点连边,白点向汇点连边,不能同时选的一对黑.白点连边. 当 ...
- 深入理解 Python 中的装饰器
装饰器本质上也是函数,接收函数对象来作为参数,并在装饰器的内部来调用接受的函数对象完成相关的函数调用,也可以这样理解 ,为了方便在几个不同函数调用之前或者完成相关的统一操作,注意是完成统一的操作, ...
- PEtools PE操作工具类C++
源码来自各大网友并非原创修改了部分函数 仅供参考(PE没源码参考应该是很吃力的) 暂未更新完持续更新中....... PETools.h //函数头 int GetFileLength(FILE *p ...
