昨天有新学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必学,记住了!
有同学反应,在使用photoshop时,忽然文件打不开了,先后试了下psd格式、jpg格式、png格式的,等等等等,全都打不开,重启了电脑也不行,这是怎么回事呢?经过丁老师研究后发现,这是因为安装的是非正版photoshop,在使用时,...
在使用jet brains的ide开发代码时,经常性的会输入单引号或双引号,ide默认有对于引号的自动完成功能,即输入一个引号,自动显示两个,这一点其实做的很不智能,因为在使用时经常会有显示出3个的情况,那么怎么关闭这个功能呢?file...
打开电脑的Nahimic软件,提示“您的nahimic驱动程序似乎已经过期,无法启动”,然后需要点击链接更新驱动,但点击进去后,也找不到什么驱动。经过研究发现解决办法:1.使用SDI安装,即Snappy Driver Installer...
最近有个项目,是开发鸿蒙APP,涉及到鸿蒙应用的打包和发布的流程,特此开个文章做一下介绍。打包应用鸿蒙应用主要通过DevEco Studio进行打包,打包后生成的是HAP文件 (HarmonyOS Application Package...
微信小程序部分一、完善小程序基本信息1.用管理员账号登录微信小程序(https://mp.weixin.qq.com/);2.左侧菜单选择首页;3.完善小程序的基本信息,包括小程序名称、小程序类目、微信认证、微信备案等。二、小程序开发配置1...
在php代码中,遇到复杂的sql语句,需要拼装sql语句,如:$sql='id 10;' $sql=' and( status in(1,2,3,4,5) and id not in (select id from ...
正确的USB连线,其次打开开发者选项、USB调试,这些都是老生常谈,就不说了。在确保以上操作无误后,如果还找不到真机,关闭IDE,然后去adb的目录下,即HBuilderX\plugins\launcher\tools\adbs,把adb....
在使用uniapp开发app和小程序时,经常会用到打开app/小程序时,根据登录状态判断是显示首页还是跳转登录页的功能。此功能在app.vue的onlaunch方法中定义,方法如下:onLaunch: function() { const ...