Gradle+IDEA使用说明
Gradle+IDEA使用说明
导语:
IDEA拥有大量的JAVA开发者拥护,相比于开源的eclipse,IDEA拥有更简洁直观的界面,拥有更强大的自动补全功能,号称能“一路敲回车完成编码”。如果把IDEA和eclipse比作手机系统,IDEA就好比IOS,美观、强大、人性化、傻瓜化,官方就帮你解决了大部分问题与操作。eclipse更像android,自由、开放、高度可定制,通过一系列的插件也可以达到IDEA同样的、甚至更个性化的体验,但是操作不免让人感觉复杂、上手难。
Gradle作为build工具的新星,受到谷歌的大力拥护,直接钦定为AS的御用build工具,在java web方面也大有取代maven上位的趋势,已成为IDEA默认支持的构建工具。gradle最大的优势是可以直接在脚本中运行groovy语言,这就使得gradle具有非常强大的扩展性。
使用IDEA+gradle所组成的工具为项目开发带来了极大的便利,熟练的使用它们相信会为我们带来事半功倍的效果
一,何为build工具
我们写一个java web程序大致需要以下步骤呢:
- 从版本控制系统下载基础源码
- 编写程序,并在这过程中复制相应的依赖包到classpath目录下
- 编译java 文件,形成jar包
- 运行单元测试
- 生成代码覆盖度报告和测试报告
- 打包形成war文件
- 上传到测试服务器上,进行部署
在以前,这些操作都是需要我们手动去完成的。比如当引入一个外部依赖时,我们要专门去相应的地方拷贝得到jar包,或者得到源码编译出jar包,然后复制到classpath目录下。写完代码后,我们需要手动使用编译工具编译,然后手动去运行测试工具进行单元测试,如果没问题的话,再手动打包成war包,然后手动上传到服务器指定目录部署。
一个项目下来我们将会在这些与写代码无关的事情上浪费大量时间,而这些行为很明显是重复的,完全可以编写出相应的程序来帮助我们自动的完成这一系列的操作。而且多人合作时,每个人使用的外部依赖库的版本可能不一样,当合并项目后有可能会因为版本的不同带来BUG,而且这些BUG非常不容易让人发现,人们急需一个统一管理第三方依赖的工具。于是build工具出现了。
二,在IDEA中创建一个gradle构建的java web项目
最新版的IDEA默认集成了gradle,不用安装gradle程序就可以在IDEA中创建gradle管理的项目
1,创建项目
2,填写项目ID
PS:引自百度知道
groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找搜索。
groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
比如我创建一个项目,我一般会将groupId设置为cn.zr,cn表示域为中国,zr是我个人姓名缩写,artifactId设置为testProj,表示你这个项目的名称是testProj,依照这个设置,你的包结构最好是cn.zr.testProj打头的,如果有个StudentDao,它的全路径就是cn.zr.testProj.dao.StudentDao
3,配置gradle
4,填写工程名
5,得到的最终目录结构和build.gradle文件
三,gradle使用说明
gradle是一个工具,通过执行build.gradle来实现build的功能,build.gradle这个build脚本是需要程序员自己来编写的,可以使用groovy语言来编写,功能强大而且直观。也可以直接引入其他人已经编写好的脚本或工具来实现build,引入方法为通过apply plugin: 'plugin名'语句实现,plugin可以是build脚本也可以是java程序。
gradle官方提供了很多常用的build plugin,比如我们这次创建项目引入的‘war’plugin,他是继承自‘java’这个plugin,在实现‘java’plugin中关于build java程序的基础上,额外定义了java web项目目录、打包war包等功能,剔除了打包jar包的功能,具体详情可以在gradle官方文档中查看到。
build操作通过引入相应的plugin基本就可以实现了,在平时的使用过程中,我们主要对gradle的操作是添加第三方依赖,让gradle帮我们管理这些第三方依赖。
通过手动操作引入一个第三方依赖(例如spring core)
- 前往spring官网找到其提供的spring core下载地址
- 选择一个需要的版本下载下来
- 解压,将得到的jar包移动到我们项目的classpath目录下
只需三步,看起来并不是很复杂。但是一个项目需要引入的第三方依赖的数量往往是十分巨大的,而且假如我们下载的spring core版本是4.3.6,并且这是一个多人共同协作的项目,当大家的工作合并起来时,如果有人使用的是4.2.1版本,我们是很难发现这个不同的,而这却可能导致BUG。同时,要删除某些不再需要的依赖时我们只能去classpath目录下找到它并手动删除掉。
使用gradle引入一个第三方依赖(例如spring core)
gradle兼容maven仓库,所以可以直接使用maven仓库来导入第三方依赖。maven仓库是按照一定协议来存放各种第三方依赖库的空间,可以通过groupID和artifactid定位来找到自己需要的第三方依赖库。
- 在build.gradle中指定用来下载依赖库的仓库,可以使用网址或者本地地址来指定,也可以使用“mavenCentral()”这些gradle定义的地址来使用默认的仓库。
- 在dependencies中使用写入依赖库所在组(group),名称(name),版本号(version)
仓库只需要定义一次,通过上面的配置gradle就会从定义好的仓库中找到相应的依赖包下载下来并编译好,然后就可以直接在代码中使用了。在mvnrepository这个远程maven仓库中,它提供了引入相应依赖包的配置,只需复制下来黏贴到buil.gradle文件中即可。
通过build工具管理依赖库的优点
- 方便,不需要进行各种文件操作。
- 直观,项目中使用了哪些第三方依赖一目了然
- 统一,同一项目中的成员只要保证使用同一build脚本就可以做到环境和依赖包的统一
四,关于Javaweb中gradle的目录配置和IDEA对gradle的适配
java web有自己的程序包规范(封包格式为.war),类似于安卓中的apk文件。将其移动到web服务器(如tomcat)的相应目录中,web服务器就会将其解压、部署,将网站跑起来。当然也可以直接将其解压,将得到的目录移动到服务器程序指定的目录下(类似于Apache的www目录)即可。
war包结构
gradle定义的项目结构(准确来说是‘war’这个plugin定义的)
将项目目录结构定义的有别于程序包目录结构,是为了方便程序员在编写程序的时候更加直观的管理项目文件,因为程序包定义的目录结构不一定适合人们直观的对其进行操作。比如war包专门定义了一个Resource目录,方便用户集中管理资源文件和各种配置文件
IDEA的项目构建配置(ctrl+alt+shift+s)
IDEA对各种构建工具的适配就主要体现在这个界面,在这个界面可以提供可视化的构建操作
Gradle+IDEA使用说明的更多相关文章
- Android 开发必备知识:我和 Gradle 有个约会
腾讯Bugly特约作者:霍丙乾 0.讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究 ...
- LeakCanary 中文使用说明
http://www.liaohuqiu.net/cn/posts/leak-canary-read-me/ LeakCanary 中文使用说明 分享到:新浪微博微信 10 May 2015 Leak ...
- gradle构建android项目详解
1.用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了. 根目录下面的settings.gradle当中主要是用来include子模块的,比如我们这 ...
- Android Gradle defaultConfig详解及实用技巧
实际项目中,都会应用Android Gradle Plugin,根据实际中的项目模块的职责,可以具体应用如下四种插件类型. 1,apply plugin: 'com.android.applicati ...
- JMH使用说明
JMH使用说明 一.概述 JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件.何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测 ...
- [Android]AndFix使用说明
AndFix使用说明 AndFix,全称是Android hot-fix.是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug.支持Android 2.3 到 6.0,并且支 ...
- 说Gradle
说Gradle 刚开始认识Gradle这个名词是在蘑菇街的一场 交流会上,当时只是一个概念:第二面,是试图下载编译spring源码的时候:第三面,就是我司较真的安卓主程,有一天兴高彩烈的跟我说,我 ...
- Mars Sample 使用说明
Mars Sample 使用说明 https://github.com/Tencent/mars/wiki/Mars-sample-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98 ...
- Gradle基础:11:使用Kotlin的Gradle(转)
Gradle基础及进阶(转) https://blog.csdn.net/liumiaocn/article/category/8369185 Gradle基础:1: 简介与安装 Gradle基础:2 ...
随机推荐
- nginx系列8:反向代理和负载均衡原理
反向代理是nginx的一个非常重要的功能. 反向代理 nginx支持四层反向代理和七层反向代理,如下图. 负载均衡 负载均衡是实现服务高性能和高可用的重要手段,而nginx是实现负载均衡的重要工具.
- Android 使用TextView实现跑马灯效果
前言 我们在开发中经常会遇到一个小问题.比如下面一个小例子: 这个文字太长,单行中导致无法全部显示出来,这就是今天要实现的功能. 当然,百度中也有很多这种解决方案. 其中有一种,例如: <Tex ...
- 27号华为笔试(三道ac两道)
三道题目case:100,100,0: 三个题目: 前两个都全部ac了,第三题没时间: 记录一下大概的思路: 第一题 主要通过Java中的字符串处理函数:然后控制字符串输入格式: 卡bug的点: 1: ...
- mysql的严格模式与无效字符编码问题
问题一般格式为: 1366 Incorrect string value: '' for column 1300 Invalid utf8 character string: '' 向mysql插入中 ...
- [20190416]exclusive latch测试脚本.txt
[20190416]exclusive latch测试脚本.txt --//昨天做了shared latch的测试脚本,今天完善exclusive latch测试脚本,上个星期的测试我是手工执行的.- ...
- CentOS 6忘记root密码的解决办法
1.在开机启动的时候按键盘上的“E”键 或者“ESC”键,会进入如下界面 2.选择相应的内核,再次按“E”,出现下图,选择第二项,再次按“E”键 3.经过第二步,这个画面可以编辑,在信息的最后加“空格 ...
- WEB 性能测试用例设计以及总结
WEB 性能测试用例设计以及总结 WEB 性能测试用例设计模型是设计性能测试用例的一个框架,在实际项目中,需要对其进行适当的剪裁,从而确定性能测试用例的范围和类别.剪裁的依据是性能测试策略和测试范围, ...
- Mybatis 批量添加,批量更新
此篇适合有一定的mybatis使用经验的人阅读. 一.批量更新 为了提升操作数据的效率,第一想到的是做批量操作,直接上批量更新代码: <update id="updateBatchMe ...
- Azure存储账户的日志分析方法
1.首先确认日志功能是否开启(日志文件根据存储账户的类型,按使用量收费 . 2.在存储账户-Usage(classic)-Metrics中查看突出流量的时间: 3.在Explorer中下载对应时间点的 ...
- [LeetCode] 18. 四数之和
题目链接:https://leetcode-cn.com/problems/4sum/ 题目描述: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个 ...