- 一、什么是maven
- 跨平台 不需要考虑版本的问题
- 进行依赖管理 以及项目信息管理
- 说白了就是一个架子来管理项目
- maven依赖自动下载,统一依赖管理
- 二、什么是依赖管理
- 对于第三方依赖包的管理,可以连接互联网下载项目所需要的第三方jar包
- 但是有了maven之后就不用自己联网下载了,maven会自动在网上下载
- 三、传统的加载依赖 /// maven的加载依赖
- maven只要编写pom文件然后引入坐标即可就配置好了
- 传统的需要这个官网那个官网找jar包,然后再本地的文件包中导入,及其麻烦
- 四、什么是项目构建
- 项目构建:一个从编写代码到编译、测试、运行、打包、部署的过程,也可以说是声明周期
- 传统项目:打开idea编写代码配置文件,对源代码进行编译,用junit(@Test)进行单元测试,把项目打成war包,部署到tomcat上运行
- maven项目:项目构建过程标准化,每一个阶段都可以是一个命令
- 编译->测试->运行->打包->部署(通过那个maven projects)就是maven的生命周期
- 好处:对于每个构建阶段进行规范,所以有助于大型的团队开发
- 五、maven的应用场景
- 开发人员按照maven标准的目录结构进行开发,提交代码,maven自动化项目构建完成项目的清理、编译、测试、打包
- 开发人员和测试人员很好的交互
- 六、为什么使用maven
- 依赖管理,仓库管理,只用定义一个pom.xml文件jar包只需要导入坐标即可,maven版本一致,你的代码可以直接放在另一个电脑上运行,解决了idea的这种问题
- 七、maven目录分析
- bin:含有mvn的运行脚本
- boot:
- conf:含有setting.xml配置文件
- lib:含有maven运行时所需要的Java库
- 八、maven的第一个项目 只用maven Java 没用maven web
- resources-->存放项目资源文件,spring mybatis配置文件
- test中junit测试类 通过@Test进行测试
- groupid是项目的坐标
- 九、maven配置的两个重要的点:
- 配置一个位置<setting> 注意maven是需要网络的
- <mirror>镜像 配置aliyun的镜像,不配置的话走maven中央仓库(非常慢),配置一个镜像就会很快, 私服的镜像最好不要用热点数据(一但有问题,换网络)
- 十、运行方式
- maven生命周期中的package,打包后放在了target中,然后目录cmd,java -jar 项目名也是运行方式之一
- 还有就是test
- 十一、maven仓库
- 用来统一存储所有maven共享构建的位置就是仓库(jar包)
- groupid/artifactid/version/基本上就是锁定一个Java文件
- 本地仓库:/m2/repository/可修改
- 远程仓库:中央仓库 私服(公司内部)
- 十二、maven进阶
- pom.xml 声明项目的依赖
- 在maven中坐标是唯一标识 groupid组织标识 artifactid项目名 version版本号(形式为0.0.1-SNAPSHOT)是必须定义的 packaging:打包的方式 pom(不写代码,只做jar包的管理) jar(springboot java文件) maven-plugin war(java web项目)
- 坐标的意义:为了规范存储,通过坐标来找到
- 自己项目坐标的意义
- groupid:三级包 artifactid:项目名称 version:项目的当前版本号 packaging打包方式
- groupid:三级包 artifactid:项目名称 version:项目的当前版本号 packaging打包方式
- 十三、依赖
- 依赖的意义:通过dependencies进行依赖管理
- 三维坐标:groupid:三级包 arti:项目名 version:版本号
- scope:控制改依赖包在什么情况会被加载到classpath中
- 将scope设置为compile 可以在main中@Test compile范围是最大的都可以 provide编译和测试 没有运行 runtime是运行时 test测试 默认使用compile
- 依赖传递和可选依赖
- 依赖传递:A->B->C->D install进本地仓库
- 依赖范围对传递依赖的影响
- 依赖范围对传递依赖的影响
- 可选依赖:不想要D 下面这个就相当于makefriend依赖了hello 使用exclusion属性,排除掉引用的依赖,等第二个再依赖的时候可以依赖hello项目,而阻断就不可以了
- 注意:可选和阻断不一样
- 依赖阻断 下面的框中:<optional>true进行了依赖阻断,如果之后又有其他的依赖hellofriend的话,不会再引入依赖hello,因为optional进行了阻断 暴力行为、
- 依赖传递:A->B->C->D install进本地仓库
- 十四、仓库
- 放jar包的地方
- 本地 中央 远程
- 十五、依赖搜索顺序
-
- 十六、有三套相互独立的生命周期
- clean清理项目:clean
- default构建项目:complie test install package
- site建立项目站点
- 十七、maven的插件
- build:依赖插件
- 十八、继承和聚合
- 继承的意义:避免重复,让项目更安全,把公共的写在父模块中
- 家里ldependencymanagement父工程只做依赖管理
- 父工程pom 中的properties放版本号,然后子工程直接引入
- 在父工程new model
- 父工程只做依赖管理,不去实现
- 因为直接依赖管理,所以可以删掉src,写上dependencyman
- 然后下面写版本号properties
-
- 然后new model文件作为子工程
- 子工程依赖的话就直接继承
- 子工程依赖的话就直接继承
- 因为直接依赖管理,所以可以删掉src,写上dependencyman
- 如果有页面的话就勾选javaweb
- 也是在父工程下面创建
- 只需要打包父工程所有的都有了
- 十九、私服
- 私服就是一个远程仓库,员工将自己的项目进行打包然后发送给其他人
- 私服还充当一个代理服务器,当私服上没有jar包从互联网中央仓库自动下载 比如:员工A刚来在本地仓库上没有就去公司的私服上找,还没有的话就在maven的中央仓库中拉到公司的私服 拉到本地仓库
Maven项目管理工具
最新推荐文章于 2025-07-18 20:55:16 发布