通俗理解Maven和Gradle

来源:互联网 发布:java工作内容 编辑:程序博客网 时间:2024/05/16 15:31

通俗理解Maven和Gradle

有很多初学者对Ant、Maven和Gradle不甚理解,在这里我整理了两篇非常通俗易解的表述。相对于长篇大论的概念性回答,这样的才显得更直观。(不涉及如何使用)

Maven

Maven的出发点是要在Ant的基础上自动解决依赖的问题; Gradle 又号称比Maven更先进。

不过自动解决依赖的问题,对联网要求较高。特别是要访问类似于google这样一些站点去下载依赖。

Maven的原理就是,你在一个配置文件中(pom.xml)定义好依赖(当然也有界面工具),然后他就会把所有依赖加入到Maven的依赖库中(repository),但你不需要手动去下载,maven会自动下载的。

例如:你的web工程需要访问Mysql,你需要手动将java-jdbc-mysql.jar放到WEB-INF/lib/ 目录下。而有了Maven,你只需要在指定的配置文件(pom.xml)中按它的语法写上需要jdbc-mysql的jar包,也可以随便告诉它你要哪个版本,WEB-INF/lib目录甚至不需要有任何jar包。

Maven初次导入工程时,经常报错,可能就是依赖没有下载完成。另外,特别注意:如果你的工作区存在多个工程,并有依赖关系,这些被依赖的工程,也必须通过maven发布(install)到它的本地库中(repository)。

只是个工具,掌握基本原理即可,使用的话IDE 集成的很好了,那几个命令背下来就好 clean、install 等等 ,不难 。

Gradle

项目自动化构建工具
作者:nonesuccess
链接:https://www.zhihu.com/question/30432152/answer/79547641
来源:知乎

说了要通俗的理解,那就用不着学习什么理论了,通俗着来就是了。
通俗的说:gradle是打包用的。

你觉得解决你的问题了吗?如果没解决,那是你的问题提得不够好。比如我猜你应该提:为什么要打包发布,打包发布有几种常见方法,为什么这些常见方法中要选gradle,等等。
针对我猜的这些内容,通俗的讲是这样的: 以在eclipse里面写java程序为例

为什么需要打包:
最初写完了,直接右键run就可以了。但是程序写完了毕竟是要发布到服务器上或者给别人用的,你第一不可能让所有要运行的人都装个eclipse,第二不可能把源代码公布给所有人。所以你需要把你的代码发布成二进制形式,让其它环境方便运行,这就是打包。
打包的时候要做很多事,比如说配置文件中的用户名和密码,你本地开发和程序实际运行时的内容肯定不一致,所以需要有两个文件,开发的时候用一个,实际运行的时候用一个。这样每次打包的时候都要重复的做这些事,ant可以让你用xml的形式把这些事情写成脚本,然后自动运行。

为什么用maven
你的项目要用很多jar包,比如你写日志要用个log4j吧,连数据库要用个connector吧。这年头写程序不用个spring都不好意思出门,下载下来的spring包打开一看,密密麻麻的好几十个jar,不知道用哪个不用哪个。而且,即便是你一狠心把这些jar包都放进来,很大可能性还是不能运行,因为还要依赖其它的jar包。哪天想升级个spring小版本,所有jar包都要重来一遍,你也不记得哪些是由于spring引进来的jar包了。
所以有了maven,你只要配置一下说我要用spring3,所有jar包都给你下载好了,你直接运行就行了。赶明儿想升级版本,直接把3改成4,新的jar包也给你下载好了。
然后?
用了maven,jar包是方便了,但我打包的时候还是有好多事要做啊,然后你会发现maven实在是不知道怎么做这些事,于是开始怀念ant。
gradle就是又能干maven的活,又能干ant的活,用groovy语言写脚本,表达能力还更强。 就这意思。

简化版如下:
ant可以自动化打包逻辑。 maven也可以自动化打包,相比于ant,它多做的事是帮你下载jar包。 但是maven的打包逻辑太死板,定制起来太麻烦,不如ant好用。gradle就是又能自动下jar包,又能自己写脚本,并且脚本写起来还比ant好用的这么个东西。

以上maven内容出处知晓者请留言

原创粉丝点击