为什么要学maven
Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。
提供了一套标准化的项目结构
提供了一套标准化的构建流程(编译,测试,打包,发布.)
繁琐一个流程: 编译---->测试---->打包(war)---->部署
maven提供标准自动化部署流程(一键部署)
不同的开发工具创建的项目结构是不一样的
maven规范了项目的结构,开发人员上手项目变得更加简单
提供了一套依赖管理机制。(管理项目所有的jar包)
使用传统项目开发cim项目,项目大小几十兆
如果项目的iar包很多的话,体积就会很大,占用磁盘过大,传输过程非常慢
解决:利用仓库统一管理了所有的jar
jar包和jar包版本冲突问题
解决:利用“依赖传递”特性把相关的jar都会引入进来,有效解决一定程度版本冲突问题
创建maven项目
我的本地仓库也命名为了C:\repmvn
cmd里mvn archetype:generate
包名com.xushu
项目名称(坐标)hello
版本1.0
确认以后输入y
项目结构
约定>配置
坐标(pom.xml文件下
依赖引用
properties属性配置
它里面就是变量
创建基于maven的web应用
把之前servlet里的文件放到创的maven里然后
默认是jar包,或者设置成pom用来聚合,不是一个具体的包
注意:tomact10
Jakarta报错通常与Servlet API的包名变更有关。Tomcat 10开始实施Jakarta EE的规范,其中Servlet API的包名由javax.servlet
变更为jakarta.servlet
。以下是一些解决这个问题的方法:
-
确保项目依赖正确:如果你的项目使用了Tomcat 10或更高版本,确保你的项目依赖也更新为使用
jakarta.servlet-api
而不是javax.servlet-api
。例如,在Maven的pom.xml
文件中,依赖应该如下所示:<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency>
2.把tomcat10换成低级的
maven命令
测试test时候命名文件要以Test开头
依赖范围
依赖的传递
依赖排除和覆盖
跟上面不让传递效果一样但是是在b项目不让动情况下直接设置一下
或者再设置一个版本覆盖(自己工程优先替换)
通过依赖图查看依赖链
在maven窗口右键不然显示找不到
聚合工程
聚合项目不写代码
1.创建新项目,删除src文件
2.创建两个module模块,要在Java下创建(可以命名为ajuhe和bjuhe),创建时候parent(父项)不要选
3.在该项目的pom.xml下设置
4把bjuhe的main改了
5把bjuhe的坐标给ajuhe
6.现在在bjuhe里面随便添加一个依赖ajuhe会直接出现,可以在右边的maven里面看到
7.编译什么的可以直接在juhee进行,不用单独打包清除等
maven继承
也就是在创建两个模块时候选择父亲然后在juhee里面添加依赖她两就都有了
之前没添加我们采用这种方式手动添加这个坐标是父的坐标
继承时候分为必须继承和选择性继承
必须继承的坐标就继承过去了,选择继承的在某个模块里单独设置一下,像这样