昨天有新学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必学,记住了!
Moment.js是一个不错的时间处理类js封装包,从官网下载默认是英文的,比如moment().format('dddd')显示出来是Tuesday,如果要显示中文的话,有两种方法:1.moment-with-loca...
我们都知道Visual Studio的自动完成功能,可以在开发时,自动提示补充语法、参数等信息,可以方便的协助我们来开发程序,但是有同学发现,在使用VS开发C#程序时,编辑器的自动完成功能很不好用,要么是在正常输入代码时,突然出现提示,...
在Flutter中,double.infinity和double.maxFinite看起来非常的相似,他们的区别是什么,分别在什么情况下使用呢?今天丁老师给你解答。如果从严格的面向数据角度来看,两者的区别在于double.maxFini...
在vs code中,可以通过配置.vscode/launch.json来debug deno项目,具体方法如下:1.创建.vscode/launch.json;2.找到<entry_point ,替换为你的script脚本;3.点...
在php代码中,遇到复杂的sql语句,需要拼装sql语句,如:$sql='id 10;' $sql=' and( status in(1,2,3,4,5) and id not in (select id from ...
微信小程序自2023年8月起,开始对《手机号快速验证组件》进行收费,每个小程序有1000次的免费额度,超过额度就要收费。说白了就是以后在使用微信小程序获取用户手机(用户主动授权)的时候,需要按次数收费了。那么,在当前的经济状况下,如何做到轻...
内网穿透,是指外网可以访问内网,没有固定IP的服务器,所以需要中间件来进行通讯,目前稳定成熟的中间件软件,要么价格太贵,要么就是只能使用标准服务,不能完全的定制化。那么,到底有没有一个性价比最优的方案呢?回答是肯定的,答案就是使用云服务器+...
1. composer版本更新文档版本号:https://getcomposer.org/download中文网:https://docs.phpcomposer.com/03-cli.html#self-update英文网:https:/...