Maven

Maven

1. 为什么要用Maven?

假设一种情形:目前正在开发A和B两个项目,其中A项目中的一些功能依赖于B项目中的某些类,如何维持这种依赖关系?

一般情况下,如果需要用到哪个项目中的哪些类,也就是别人写好的功能,导入jar包即可。

所以解决方案之一就是把B项目打包,使其成为jar包,然后在A项目中导入B项目的jar包,这样,A项目可以使用B项目中的某些类。

但是这种方法存在几个问题:

  • 开发过程中,B项目有bug,必须先修改bug重新打包,对A项目进行重编译操作。

  • 在A项目开发完成后,为了保证A的正常运行,需要依赖B,非常麻烦。

另外,当我们使用框架开发一个项目时,必须将框架所使用的的几十个依赖的jar包依次找出并导入,非常繁琐。

因此,我们使用maven帮助我们完成上述繁琐过程。

2. 什么是Maven?

maven是一个项目管理工具,核心功能是通过pom.xml文件的配置自动获取jar包,无需手动添加。

pom:project object model,项目对象模型

pom.xml文件如何获取jar包?

在pom.xml文件中,主要利用三个属性定位一个jar包:

  • groupId:所需jar包的项目名

  • artifactId:所需jar包的模块名

  • version:所需jar包的版本号

3. pom文件中常见节点

  • packging:打包方式
    两个值:
    pom:作为parent设计,让其他pom导入,打包方式必须为pom
    jar:默认打包方式

  • modules:有多少子模块

  • properties:属性,用于引用,定义pom常量
    按照name/value/name的格式来定义变量,供pom的其他部分调用,便于管理

  • dependencyManagement:依赖管理节点
    只拿过来做一个统一管理,不实际引用,格式如下:

  • dependencies:真正去引用

  • type:引用类型,默认类型为jar

  • scope:用来指定当前包的依赖范围

  • build:构建工程的顶级节点

  • pluginManagement:功能类似于dependencyManagement,格式如下:

  • plugin:插件节点

  • target:目标平台编译版本

  • source:源代码编译版本

  • finalName:Maven定制化想要的包名

  • resources:资源管理节点,内部为多个

  • resource:具有多个子节点,用于指定资源文件的路径

  • parent:继承标签,用于继承父项目

  • repositories:配置私库

dependencyManagement和dependencies的区别

  • dependencyManagement:用来做管理,通常出现在父pom文件中,对所有引入该pom的子pom文件做统一的版本管理,以避免版本冲突带来的问题;

  • 定义dependencyManagement内部的dependency不会被自动装载,需要子pom在dependencies节点内进行显式引入才会自动下载;

  • 在dependencyManagement中注册的依赖应该已经有了明确的版本信息,后面子pom导入时候可以不写版本信息,会自动从父pom中寻找版本信息,这样可以保证所有子模块版本一致。

4. Maven的继承

利用maven可以对项目进行分模块开发,利用maven继承的特性把各个模块整合到一起,每个模块都继承一个父工程。

子模块中写parent标签,parent中包括父类的信息,如果模块中没有写标签,默认为父类

参考资料

https://zhuanlan.zhihu.com/p/64201289
https://www.cnblogs.com/pengpengdeyuan/p/14217772.html
https://blog.csdn.net/trustboycs/article/details/115373139

posted @ 2022-07-08 21:36  Claire_2099  阅读(24)  评论(0编辑  收藏  举报