IDEA拥有大量的JAVA开发者拥护,相比于开源的eclipse,IDEA拥有更简洁直观的界面,拥有更强大的自动补全功能,号称能“一路敲回车完成编码”。若是把IDEA和eclipse比做手机系统,IDEA就比如IOS,美观、强大、人性化、傻瓜化,官方就帮你解决了大部分问题与操做。eclipse更像android,自由、开放、高度可定制,经过一系列的插件也能够达到IDEA一样的、甚至更个性化的体验,可是操做难免让人感受复杂、上手难。html
Gradle做为build工具的新星,受到谷歌的大力拥护,直接钦定为AS的御用build工具,在java web方面也大有取代maven上位的趋势,已成为IDEA默认支持的构建工具。gradle最大的优点是能够直接在脚本中运行groovy语言,这就使得gradle具备很是强大的扩展性。java
使用IDEA+gradle所组成的工具为项目开发带来了极大的便利,熟练的使用它们相信会为咱们带来事半功倍的效果android
咱们写一个java web程序大体须要如下步骤呢:程序员
在之前,这些操做都是须要咱们手动去完成的。好比当引入一个外部依赖时,咱们要专门去相应的地方拷贝获得jar包,或者获得源码编译出jar包,而后复制到classpath目录下。写完代码后,咱们须要手动使用编译工具编译,而后手动去运行测试工具进行单元测试,若是没问题的话,再手动打包成war包,而后手动上传到服务器指定目录部署。web
一个项目下来咱们将会在这些与写代码无关的事情上浪费大量时间,而这些行为很明显是重复的,彻底能够编写出相应的程序来帮助咱们自动的完成这一系列的操做。并且多人合做时,每一个人使用的外部依赖库的版本可能不同,当合并项目后有可能会由于版本的不一样带来BUG,并且这些BUG很是不容易让人发现,人们急需一个统一管理第三方依赖的工具。因而build工具出现了。spring
最新版的IDEA默认集成了gradle,不用安装gradle程序就能够在IDEA中建立gradle管理的项目apache
PS:引自百度知道tomcat
groupid和artifactId被统称为“坐标”是为了保证项目惟一性而提出的,若是你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找搜索。服务器
groupId通常分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(由于tomcat是非营利项目),公司名称是apache,artigactId是tomcat。app
好比我建立一个项目,我通常会将groupId设置为cn.zr,cn表示域为中国,zr是我我的姓名缩写,artifactId设置为testProj,表示你这个项目的名称是testProj,依照这个设置,你的包结构最好是cn.zr.testProj打头的,若是有个StudentDao,它的全路径就是cn.zr.testProj.dao.StudentDao
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版本是4.3.6,而且这是一个多人共同协做的项目,当你们的工做合并起来时,若是有人使用的是4.2.1版本,咱们是很难发现这个不一样的,而这却可能致使BUG。同时,要删除某些再也不须要的依赖时咱们只能去classpath目录下找到它并手动删除掉。
gradle兼容maven仓库,因此能够直接使用maven仓库来导入第三方依赖。maven仓库是按照必定协议来存放各类第三方依赖库的空间,能够经过groupID和artifactid定位来找到本身须要的第三方依赖库。
仓库只须要定义一次,经过上面的配置gradle就会从定义好的仓库中找到相应的依赖包下载下来并编译好,而后就能够直接在代码中使用了。在mvnrepository这个远程maven仓库中,它提供了引入相应依赖包的配置,只需复制下来黏贴到buil.gradle文件中便可。
java web有本身的程序包规范(封包格式为.war),相似于安卓中的apk文件。将其移动到web服务器(如tomcat)的相应目录中,web服务器就会将其解压、部署,将网站跑起来。固然也能够直接将其解压,将获得的目录移动到服务器程序指定的目录下(相似于Apache的www目录)便可。
将项目目录结构定义的有别于程序包目录结构,是为了方便程序员在编写程序的时候更加直观的管理项目文件,由于程序包定义的目录结构不必定适合人们直观的对其进行操做。好比war包专门定义了一个Resource目录,方便用户集中管理资源文件和各类配置文件
IDEA对各类构建工具的适配就主要体如今这个界面,在这个界面能够提供可视化的构建操做