• day01学习总结


    一、为什么需要Maven

    添加第三方jar包

            在开发中,我们需要的jar包资源会越来越多,jar包的管理会越来越麻烦,并且每次创建新项目的时候都需要重新导入所有需要的jar,或者在不同的项目中保存了多份相同的jar包。

            使用Maven后,我们每一种jar包只需要在本地仓库中保存一份,就可以在不同项目中使用这个jar包,需要jar包的工程只需要维护一个文本形式的jar包的引用——我们称之为“坐标”。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成的混乱 。

    jar包之间的依赖关系

            往往我们想使用一个jar包时,只导入这一个jar包是行不通的,必须导入这个jar包依赖的相关jar包,最典型的例子是:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如果没有IO包,FileUpload包就不能正常工作。 这样就得导入多个jar包,特别是我们不知道我们想使用的jar包需要依赖什么jar包的时候,就会无从下手,或者运行项目后根据报错中找出相关依赖的jar,再进行添加。这样就很麻烦且极大的降低开发的效率,当我们使用Maven后,我们只需要添加我们想使用的jar包,Maven就会自动帮我们把相关依赖的jar包给下载并添加,极大的提升的效率和便捷。用实际例子来说明就是:通过Maven导入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar会被自动导入,程序员不必了解这个依赖关系。

    处理jar包之间的冲突

             我们在开发的过程中并不是说把jar包都导进来了就可以正常运行的,在有时候有的项目之间需要互相依赖,但项目里导入的jar版本号并不相同,这就会发生jar包冲突,举个例子:我们现在有三个工程MakeFriend、HelloFriend、和Hello。MakeFriend依赖HelloFriend,HelloFriend依赖Hello。而Hello依赖log4j.1.2.17.jar,HelloFriend依赖log4j.1.2.14.jar。如下图所示:

            所以我们在运行MakeFriend项目的时候,到底该导入那个jar包呢?这样的问题一个两个还可以手工解决,但如果系统中存在几十上百的jar包,他们之间的依赖关系会非常复杂,几乎不可能手工实现依赖关系的梳理。 使用Maven就可以自动的处理jar包之间的冲突问题。因为Maven中内置了两条依赖原则:最短路径者优先和先声明者优先,上述问题MakeFriend工程会自动使用log4j.1.2.14.jar。  

    获取第三方jar包

            我们在实际开发中使用到的jar包是很多的,但每个jar包的获取方式又不完全相同,有时候为了找一个需要的jar包而花费了大半天的时间,或者找不到,会让我们无比的头疼。

            在使用Maven后,我们可以享受一个完全统一的jar包管理体系。我们只需要项目中以坐标的体系依赖想要的jar包,Maven就会自动帮我们从中央仓库中获取,并同时下载这个jar包所依赖的其他jar包——规范、完整、准确!一次性解决所有问题!

            统一的规范几乎可以说成是程序员的最高信仰 

    将项目拆分成多个工程模块

            随着JavaEE项目的规模越来越庞大,开发团队的规模也与日俱增。一个项目上千人的团队持续开发很多年对于JavaEE项目来说再正常不过。那么我们想象一下:几百上千的人开发的项目是同一个Web工程。那么架构师、项目经理该如何划分项目的模块、如何分工呢?这么大的项目已经不可能通过package结构来划分模块,必须将项目拆分成多个工程协同开发。多个模块工程中有的是Java工程,有的是Web工程。 那么工程拆分后又如何进行互相调用和访问呢?这就需要用到Maven的依赖管理机制。大家请看我们的Survey调查项目拆分的情况:

     

     

     

     

            

  • 相关阅读:
    Java中Integer的最大值和最小值
    【MyBatis笔记04】MyBatis框架中各种参数类型绑定的方式
    Android Jetpack应用指南学习笔记11使用safe args方式安全传递参数
    uniapp云打包app使用sqlite实现本地缓存,以及云打包sqlite不生效踩坑记录
    Flink窗口
    【系统分析师之路】第十六章 复盘计算机网络(新技术领域)
    工作这么久了,还不懂多线程吗?
    Lakehouse架构指南
    【opencv-c++】读取视频文件或者直播码流
    2023年第九届数维杯国际大学生数学建模挑战赛
  • 原文地址:https://blog.csdn.net/qq_53884348/article/details/126941345