pom.xml中的一些注意点
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- gavp属性 --><!-- 不会改变 --><groupId>per.mjn</groupId><artifactId>maven-pom-dependenies-04</artifactId><!-- 构建过程 - 部署 - 修改 --><version>1.0.1</version><!-- maven工程的打包方式 java jar 【默认值】 web war 不打包 pom --><packaging>jar</packaging><!-- 声明版本号 --><properties><!-- 声明一个变量!声明完变量后,在其他位置可以引用 ${jackson.version}注意:声明的标签建议两层以上命名!version 1.15.2 推荐:技术名.version--><jackson.version>2.15.2</jackson.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 第三方依赖信息声明dependencies - 项目依赖信息的集合dependency - 每个依赖项[gav] - 依赖的信息,就是其他maven的工程 [jar]扩展:1. 提取版本号,统一管理2. 可选属性scopescope 引入依赖的作用域默认:compile 作用范围 main包 test包 打包和运行test 作用范围 test包 例如 junit @Testruntime main包不使用 test包不使用 打包和运行的时候使用比如 mysql Class.forName(com.mysql.cj.jdbc.Driver)provided main包中使用,test包中使用 打包和运行不使用比如,servlet HttpServlet Tomcat 提供了servlet--><dependencies><!--依赖传递:导入依赖,会自动导入依赖的依赖!(compile dependencies)简化依赖的导入,确保依赖的版本无冲突依赖冲突:发现已经存在依赖(重复依赖)会终止依赖传递!避免循环依赖和重复依赖的问题依赖冲突发生的场景:重复依赖!!A -> B 1.0C -> B 2.0AC 传递依赖 B依赖冲突的解决原则:第一原则:谁短谁优先! 此处指引用路径的长度A - C - B 1.0F - B 2.0 A C F B 2.0第二原则:谁先引入谁优先!此处指dependencies声明的先后顺序A - B 1.0F - B 2.0A - F - B 1.0练习:依赖引用关系:前提:A 1.1 ->B 1.1 ->C 1.1F2.2 ->B 2.2pom声明:F 2.2A 1.1B 2.2最终引入的依赖有:F 2.2A 1.1B 2.2不会引入 C 1.1 只要发生冲突了,后续的依赖传递全部终止!-->
<!-- <dependency>-->
<!-- <!– 定位信息 gav 三个属性是必须的 –>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-core</artifactId>-->
<!-- <version>${jackson.version}</version>-->
<!-- </dependency>--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</project>
父工程pom.xml中的一些注意点
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>per.mjn</groupId><artifactId>maven-pom-parent-06</artifactId><version>1.0-SNAPSHOT</version><!-- 父工程不打包,也不写代码 --><packaging>pom</packaging><!-- 要统一管理哪些子工程的 artifactId --><modules><module>shop-user</module><module>shop-order</module><module>shop-chat</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 声明版本信息 --><!-- 导入依赖!此处导入,所有子工程都有相应的依赖! --><dependencies></dependencies><!-- 声明依赖,不会下载依赖!可以被子工程继承版本号 --><dependencyManagement><dependencies><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency></dependencies></dependencyManagement>
</project>