【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】

目录

      • pom文件内部【结构详解】
      • pom文件内部【依赖管理】
        • 1、依赖传递:
        • 2、依赖传递过程中,版本冲突:
        • 3、依赖传递过程中,对外隐藏+主动断开:
      • pom文件内部【依赖的作用范围】

pom文件内部【结构详解】

<?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/maven-v4_0_0.xsd">
  <!--指定pom模型版本-->
  <modelVersion>4.0.0</modelVersion>
  <!--打包方式 web工程 打包为war;java工程打包为jar-->
  <packaging>war</packaging>

  <!--本项目名称-->
  <name>java03</name>
  
  <!--组织id-->
  <groupId>com.itheima</groupId>
  <!--项目id-->
  <artifactId>java03</artifactId>
  <!--版本号  release(完成版本)  snapshot(开发版本)-->
  <version>1.0</version>

<!--设置当前工程所有依赖-->
  <dependencies>
    <!--设置具体的依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
  </dependencies>

  <!--构建-->
  <build>
    <!--设置插件-->
    <plugins>
      <!--具体的插件配置-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </build>

</project>

pom文件内部【依赖管理】

项目初始情况:
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第1张图片

1、依赖传递:

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第2张图片
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第3张图片
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第4张图片

2、依赖传递过程中,版本冲突:

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第5张图片

从上图可以看出,项目02依赖的log4j版本是1.2.13,并非项目03的1.2.14

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第6张图片
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第7张图片

3、依赖传递过程中,对外隐藏+主动断开:

(1)因被其他项目依赖的工程,又不想让其他项目看见自己使用的依赖包,所以在自己的工程中设置【对外隐藏】【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第8张图片

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第9张图片

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第10张图片

(2)个人的工程需要依赖其他项目,但是又不想使用所依赖的项目中已经依赖的依赖,主动断开依赖传递的连接
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第11张图片

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第12张图片

对外隐藏(可选依赖)+主动断开(排出依赖)
二者对应的主体不同,注意区分

  1. 对外隐藏(可选依赖):个人不想让其他项目使用自己所依赖的包,对外设置隐藏

  2. 主动断开(排出依赖):个人项目引用其他依赖包或者项目时,为了避免版本冲突也好、不想使用所依赖包的依赖包,所以主动断开依赖度的传递性

pom文件内部【依赖的作用范围】

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第13张图片
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第14张图片
下图的作用范围为重点:
【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第15张图片

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】_第16张图片

上图了解即可

仅个人学习的部分总结,若有不妥之处,还望大佬不吝赐教,感谢~

你可能感兴趣的:(JAVA,maven,xml,java)