昨天有新学Java编程的同学咨询丁老师,Java开发中的Maven是什么呢?为什么现在Java软件开发都要用到Maven?今天就这个问题,丁老师用最简单、最直白,所有新手初学者都能听得懂的方式,做一下介绍。
Maven是什么?
简单的说,Maven就是Java软件项目的一个管理工具,可以自动帮你下载Jar包,一键编译和运行。简单的说,Maven就是类似手机中的应用商店,点一下就能自动的完成下载依赖、编译项目、运行、打包等操作。
为什么Java开发需要Maven?
在以前的开发过程中,比如丁老师以前做项目,要引入个第三方库,比如PDFBox,还得自己去官网搜索下载jar包,然后手动复制到项目里,操作非常的麻烦,并且稍微复杂点的项目,可能会有几十上百个个jar包,兼容性也不好,版本还容易冲突,有时升级个功能,可能牵一发而动全身,导致整个系统跑不起来,非常的苦恼。
但是有了Maven后,就可以轻松解决上述问题了。Maven就像个大的应用市场,你需要什么库,写好配置,Maven就自动帮你下载,还能自动解决依赖关系。
比如,你想用Spring Boot,以前得手动找几十个相关的jar包,而现在的话,在pom.xml里写这么几行就可以了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>在pom.xml里写好后,直接在Maven中刷新项目就可以了,Maven会自动下载包和处理好依赖关系。

还有哪些功能?
1.项目结构标准化
Maven会强制你按照约定的目录结构组织代码:
#放源代码
src/main/java
#放配置文件
src/main/resources
#放测试代码
src/test/java刚开始可能不太习惯,但是等你用久了后发现真香。在团队协作时,新人第一天就能找到代码在哪,可以对项目快速上手。
2.构建自动化
项目编译、测试、打包、部署,这些重复劳动交给Maven,只需要一个命令就可以搞定:
mvn clean package丁老师以前做Java项目。需要进行手动打包,每次都是点右键导出、选路径、点确定,打包一次十分钟。而用了Maven后,只需要30秒就搞定了,简单方便又快捷。
3.版本管理
有没有遇到过项目依赖的库升级的情况?在Maven中改个版本号就可以解决。如果是要回退到旧版本呢?那在Maven中再改回来就可以了,这种方式比以前的手动替换jar包方便多了。
全文总结
不过说实话,Maven是很好,但也不是完美的,Maven的学习成本稍微有点点高,需要研究pom.xml的写法,有时候依赖冲突调试起来也比较头疼。除了Maven,现在还有Gradle、Ant+Ivy这些替代品,各有各的好处。
不过Maven目前是java项目的主流管理工具,Spring、MyBatis、Dubbo等,几乎所有主流框架都优先支持Maven,不管是文档、教程、插件,生态都非常的丰富,已经是很成熟的应用了。
针对刚学Java的初学者,建议从Maven开始,虽然一开始要花点时间适应,但从长远来看的 话,绝对是能少走很多弯路,Maven必学,记住了!
适用于ecshop的微信文章采集插件包
宝塔系统相关问题解决方法
今天有同学问,要做一个网站,技术方面是用html5呢还是用vue呢?丁老师给你解答。其实,用html5和用vue,都可以做网站,但是就架构适用性来说,html5和vue有不同的特点。html5做网站的优点:1.快速开发,上手简单,不需要...
现在微信支付已经超越支付宝,成为中国最广泛的在线支付方式。作为互联网电子商务服务商,如何开通对接微信支付?如何使用微信支付呢?丁老师整理一篇微信支付常见的问题解答。一、如何开通微信支付?微信支付可以在微信支付官网(https://pay...
问题:fastadmin的add/edit方法无法保存数据,检查了页面,name=row['name']正常传送,检查controller,也是默认的方法,什么也没有动可就是无法保存数据。解决:经过仔细研究发现,原来是htm...
phpstorm程序中,在打开html时总会出现对 style属性的折叠和隐藏,这样在检查代码的时候非常不直观,容易漏掉很多东西,非常的不方便,如图:
内网穿透,是指外网可以访问内网,没有固定IP的服务器,所以需要中间件来进行通讯,目前稳定成熟的中间件软件,要么价格太贵,要么就是只能使用标准服务,不能完全的定制化。那么,到底有没有一个性价比最优的方案呢?回答是肯定的,答案就是使用云服务器+...
在用photoshop设计时,有的同学会发现,在网页中设置的宽度1000px,截屏后,再用photoshop打开后测量同样图像的宽度时,这个宽度就不是1000像素,而是1200多甚至1300多,是个很奇怪的问题,丁老师检查了photosho...