文章目录
- 1. 第一节 实验一:根据坐标创建 Maven 工程
- 1.1 Maven 核心概念:坐标
- 1.2 实验操作
- 1.3 Maven核心概念:POM
- 1.4 Maven核心概念:约定的目录结构
- 2. 实验二:在 Maven 工程中编写代码
- 2.1 主体程序
- 2.2 测试程序
- 3. 执行 Maven 的构建命令
- 3.1 要求
- 3.2 清理操作
- 3.3 编译操作
- 3.4 测试操作
- 3.5 打包操作
- 3.6 安装操作
- 4. 创建 Maven 版的 Web 工程
- 4.1 说明
- 4.2 操作
- 4.3 生成的pom.xml
- 4.4 生成的Web工程的目录结构
- 4.5 创建 Servlet
- 4.6 在 index.jsp 页面编写超链接
- 4.7 编译
- 4.8 配置对 servlet-api.jar 包的依赖
- 4.9 将 Web 工程打包为 war 包
- 4.10 将 war 包部署到 Tomcat 上运行
- 5. 让 Web 工程 依赖 Java 工程
- 5.1 观念
- 5.2 操作
- 5.3 在 Web 工程中,编写测试代码
- 5.4 执行Maven命令
- 6. 测试依赖的范围
- 6.1 依赖范围
- 6.2 测试
- 7. 测试依赖的传递性
- 7.1 依赖的传递性
- 7.2 使用 compile 范围依赖 spring-core
- 7.3 验证 test 和 provided 范围不能传递
- 8. 测试依赖的排除
- 8.1 概念
- 8.2 配置方式
- 8.3 测试
- 9. 继承
- 9.1 概念
- 9.2 作用
- 9.3 举例
- 9.4 操作
- 9.5 实际意义
- 10. 聚合
- 10.1 聚合本身的含义
- 10.2 Maven 中的聚合
- 10.3 好处
- 10.4 聚合的配置
- 10.5 依赖循环问题
1. 第一节 实验一:根据坐标创建 Maven 工程
1.1 Maven 核心概念:坐标
①数学中的坐标
使用 x、y、z 三个『向量
』作为空间的坐标系,可以在『空间
』中唯一的定位到一个『点
』
②Maven中的坐标
③坐标和仓库中 jar 包的存储路径之间的对应关系
坐标:
上面坐标对应的 jar 包在 Maven 本地仓库中的位置:
一定要学会根据坐标到本地仓库中找到对应的 jar 包。
1.2 实验操作
1.3 Maven核心概念:POM
1.4 Maven核心概念:约定的目录结构
2. 实验二:在 Maven 工程中编写代码
2.1 主体程序
主体程序指的是被测试的程序,同时也是将来在项目中真正要使用的程序。
2.2 测试程序
3. 执行 Maven 的构建命令
3.1 要求
运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:
3.2 清理操作
mvn clean
效果:删除 target 目录
3.3 编译操作
主程序编译:mvn compile
测试程序编译:mvn test-compile
主体程序编译结果存放的目录:target/classes
测试程序编译结果存放的目录:target/test-classes
3.4 测试操作
mvn test
测试的报告存放的目录:target/surefire-reports
3.5 打包操作
mvn package
打包的结果——jar 包,存放的目录:target
3.6 安装操作
mvn install
[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\target\pro01-maven-java-1.0-SNAPSHOT.jar to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar
[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\pom.xml to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.pom
安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的
坐标信息如下:
在 Maven 仓库中生成的路径如下:
D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar
另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。
4. 创建 Maven 版的 Web 工程
4.1 说明
使用 mvn archetype:generate
命令生成 Web 工程时,需要使用一个专门的 archetype。这个专门生成 Web 工程骨架的 archetype 可以参照官网看到它的用法:
参数 archetypeGroupId、archetypeArtifactId、archetypeVersion 用来指定现在使用的 maven-archetype-webapp 的坐标。
4.2 操作
注意:如果在上一个工程的目录下执行 mvn archetype:generate 命令,那么 Maven 会报错:不能在一个非 pom 的工程下再创建其他工程。所以不要再刚才创建的工程里再创建新的工程,请回到工作空间根目录来操作。
然后运行生成工程的命令:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4
4.3 生成的pom.xml
4.4 生成的Web工程的目录结构
4.5 创建 Servlet
4.6 在 index.jsp 页面编写超链接
4.7 编译
4.8 配置对 servlet-api.jar 包的依赖
对于不知道详细信息的依赖可以到 https://mvnrepository.com/
网站查询。使用关键词搜索,然后在搜索结果列表中选择适合的使用
比如,我们找到的 servlet-api 的依赖信息:
4.9 将 Web 工程打包为 war 包
4.10 将 war 包部署到 Tomcat 上运行
5. 让 Web 工程 依赖 Java 工程
5.1 观念
明确一个意识:从来只有 Web 工程依赖 Java 工程,没有反过来 Java 工程依赖 Web 工程。本质上来说,Web 工程依赖的 Java 工程其实就是 Web 工程里导入的 jar 包。最终 Java 工程会变成 jar 包,放在 Web 工程的 WEB-INF/lib 目录下。
5.2 操作
在 pro02-maven-web 工程的 pom.xml 中,找到 dependencies 标签,在 dependencies 标签中做如下配置:
5.3 在 Web 工程中,编写测试代码
5.4 执行Maven命令
6. 测试依赖的范围
6.1 依赖范围
6.2 测试
然后运行Maven的编译命令:mvn compile
然后看到编译成功。
7. 测试依赖的传递性
7.1 依赖的传递性
7.2 使用 compile 范围依赖 spring-core
7.3 验证 test 和 provided 范围不能传递
8. 测试依赖的排除
8.1 概念
8.2 配置方式
8.3 测试
9. 继承
9.1 概念
9.2 作用
9.3 举例
在一个工程中依赖多个 Spring 的 jar 包
9.4 操作
9.5 实际意义
10. 聚合
10.1 聚合本身的含义
部分组成整体
动画片《战神金刚》中的经典台词:“我来组成头部!我来组成手臂!”就是聚合关系最生动的体现