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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧