pom.xml中的一些注意点文章来源:https://www.toymoban.com/news/detail-856790.html
<?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. 可选属性scope
scope 引入依赖的作用域
默认:compile 作用范围 main包 test包 打包和运行
test 作用范围 test包 例如 junit @Test
runtime main包不使用 test包不使用 打包和运行的时候使用
比如 mysql Class.forName(com.mysql.cj.jdbc.Driver)
provided main包中使用,test包中使用 打包和运行不使用
比如,servlet HttpServlet Tomcat 提供了servlet
-->
<dependencies>
<!--
依赖传递:导入依赖,会自动导入依赖的依赖!(compile dependencies)
简化依赖的导入,确保依赖的版本无冲突
依赖冲突:发现已经存在依赖(重复依赖)会终止依赖传递!避免循环依赖和重复依赖的问题
依赖冲突发生的场景:重复依赖!!
A -> B 1.0
C -> B 2.0
A
C 传递依赖 B
依赖冲突的解决原则:
第一原则:谁短谁优先! 此处指引用路径的长度
A - C - B 1.0
F - B 2.0 A C F B 2.0
第二原则:谁先引入谁优先!此处指dependencies声明的先后顺序
A - B 1.0
F - B 2.0
A - F - B 1.0
练习:
依赖引用关系:
前提:
A 1.1 ->B 1.1 ->C 1.1
F2.2 ->B 2.2
pom声明:
F 2.2
A 1.1
B 2.2
最终引入的依赖有:
F 2.2
A 1.1
B 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中的一些注意点文章来源地址https://www.toymoban.com/news/detail-856790.html
<?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>
到了这里,关于Maven 杂记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!