昨天有新学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必学,记住了!
微信公众号可以把官网的网页集成进去吗?想通过微信公众号实现打开公司网站的页面,具体要怎么实现呢?其实这个功能,可以通过微信菜单的方式来实现...
有客户咨询,在Wordpress,如何去掉页面底部的Powered by wordpress字符呢?在后台设置的“页面显示-自定义”中,也没有底部页脚内容设置的选项,这个要怎么去掉呢?其实这个问题很简单,只需要进入该主题的目录,对相关的...
composer更新指定包的命令composer require alibabacloud/dysmsapi-20170525:2.0.24 --ignore-platform-reqs composer update alibabac...
有同学提问,他们公司的微信小程序,某个业务板块需要调用微信的openid,但是目前访问量巨大,已经突破了微信小程序对openid的最多次数限制,很多用户无法正常开展业务,该怎么办呢?经过丁老师分析和研究,发现该公司的小程序因访问量巨大,...
没那么多废话,直接上修改方法public\assets\js\require-table.jspageSize: Config.pagesize || localStorage.getItem("pagesize") |...
宝塔面板的phpmyadmin,默认数据库表导航树是每30个一页,非常的不直观,可以通过修改宝塔phpmyadmin配置文件的方式来禁止他分页。修改方法:1.进入服务器/www/server/phpmyadmin/phpmyadmin_随机...
用phpmyadmin导入大数据库文件时,容易502 bad gateway,可以直接在linux上用mysql原生命令导入。1.上传sql文件到目录用Xshell登录服务器,将迁移过来的 sql 文件移到 home 目录下,方便下一步的...
在进行vue开发中,经常会遇到复制对象,赋值新对象后,原对象值被改变的问题,举个例子:let old={ "a":1, "b":2 } let new=old; new['c']=3;...