Maven学习备忘

前段时间说一直以来对Maven只知道用但不求甚解,想要系统学习一下,然后就拖延症发作直到最近才实施。参考了'乐字节xyx小可爱qwq'小仙女2021最新Maven教程,以及GJYoungmaven快速入门。前者的内容更加详细,对Maven中比较有意思的使用有更多讲解;而后者则集中在Maven的基础使用。经过这段事件的学习自认为对Maven的理解有了些进步,这里记录一下一些学习要点。

Maven的作用

简单总结Maven是用来为Java项目提供「项目构建,依赖管理」的工具。它主要提供两方面的帮助。

  • 提出一套项目源代码即资源的目录结构,在此基础上构建项目实体。
  • 通过pom.xml实施依赖管理,下载以及管理项目依赖的库。

Maven还有其他的一些功能,但以上两点最为关键和常用。

在过去我们构建管理Java项目的时候需要依托IDE,不同的IDE之间又有着一定的差别,项目导入导出项目可能会出现兼容问题。Maven的存在则为Java项目的构建提供了一套完整的方案,IDE只要对Maven做好兼容,问题一般来说就不大。除开项目在不同IDE之间的导入导出,Maven作为统一方案,也降低了开发者学习成本。

Maven的特殊应用

Maven的使用比较直观,基本上通过正是项目的pom.xml的语法语义能够猜出其基本应用。这个部分主要罗列几个Maven的特殊应用。

Maven的多模块项目

参考教程Maven环境下多模块项目的构建。在过往的项目中,对于子模块的划分只是简单的用文件夹进行区分,譬如把dao的代码存储在dao文件夹下。这为一些开发者违背单向调用原则在模块之间互相调用提供空间。这种不规范的开发会造成强耦合,增加开发、调试难度。在Maven项目下构建多模块开发可以强制开发者严格遵循模块间的单向调用,使得项目开发更加规范。

通过Maven为不同环境进行打包

参考教程Maven的打包操作。这部分内容讲解了如何根据不同的环境进行打包。譬如说,在开发过程和产品部署中使用不同的数据库服务器,Maven可以通过配置为相应环境进行打包。

解决依赖冲突

教程Maven依赖的基本概念末尾讲解了如何解决依赖冲突的问题。这里的依赖冲突指的是,项目的两个依赖链条中包含了同一个库的不同版本。尽管这种情况并不常见,但也在我的开发中曾经遇到过。

Maven私服

Maven有3种仓库,中央,私服和其他公共仓库。在学习的过程中也了解了私服方面的内容,可以通过部署Nexus搭建(有现成的Docker镜像)。具体搭建和使用则没有深入研究。

其他内容

  • 「小仙女」的教程中提到过一个Jetty的服务器框架,相对Tomcat轻量些,之前没有研究过,这里Mark一个做备忘。
  • RUNOOB.COM而Maven教程,这里可以找到文档生成,快照,自动扣部署等内容的说明。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容