下面就是关于“详解 Maven 的 pom.xml 用
概述
当在Maven项目中出现依赖jar包与自己项目中的相关版本不兼容时,可以通过在pom.xml文件中使用<exclusion>
标签来排除掉该依赖中不兼容的包,保证项目的正常运行。
详解步骤
接下来详细介绍如何使用<exclusion>
标签解决版本问题。
- 首先需要确定哪个依赖中的包不兼容,可以通过使用
mvn dependency:tree
命令来查看当前项目的依赖树。
mvn dependency:tree
例如,在当前项目中出现了commons-logging和log4j的版本冲突,可以看到如下依赖树:
...
[INFO] +- commons-logging:commons-logging:jar:1.1:compile
[INFO] +- log4j:log4j:jar:1.2.14:compile
...
[INFO] +- org.springframework:spring-core:jar:5.3.6:compile
[INFO] | +- commons-logging:commons-logging:jar:1.2:compile (version managed from 1.1)
[INFO] | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.14.1:compile (version managed from 2.13.3)
...
可以看到,commons-logging包存在版本不一致的情况。
- 确定不兼容的包后,通过在pom.xml文件中使用
<exclusion>
标签来排除该依赖中的不兼容包。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.6</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
在上述示例中,排除了spring-core依赖中的commons-logging包。
- 重新编译项目,验证是否解决了版本不兼容的问题。
示例说明
下面给出两个实际的场景,通过使用<exclusion>
标签解决版本问题。
示例一
在开发项目过程中,出现了 spring-boot 与 fastjson 版本不兼容问题。在使用 Fastjson 的时候,需要排除 spring-boot 中依赖的 jackson-databind 包,以保证项目的正常运行。
步骤如下:
- 确认项目依赖情况,可以通过使用
mvn dependency:tree
命令来查看。
mvn dependency:tree
可以看到,fastjson 需要的 jackson-databind 包与spring-boot中的版本不一致:
[INFO] +- com.alibaba:fastjson:jar:1.2.57:compile
...
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.4.6:compile
...
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.11.4:compile
...
- 在 pom.xml 中排除 jackson-databind 包。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
- 重新编译项目,验证问题是否解决。
示例二
在项目中使用了 Mybatis-generator 自动生成代码,出现了 Mybatis3.x.x 与 PageHelper 的版本不兼容问题。此时,需要将 mybatis 依赖中的 com.sun.tools 包排除掉,以保证项目的正常运行。
步骤如下:
- 确认项目依赖情况,可以通过使用
mvn dependency:tree
命令来查看。
mvn dependency:tree
可以看到,Mybatis 依赖中包含了 com.sun.tools 包:
[INFO] +- org.mybatis:mybatis:jar:3.5.5:compile
...
[INFO] | +- com.sun.tools.javac:javac-api:jar:15:compile
...
- 在 pom.xml 中排除 com.sun.tools 包。
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>com.sun.tools</groupId>
<artifactId>javac</artifactId>
</exclusion>
</exclusions>
</dependency>
- 重新生成代码,验证问题是否解决。
总结
本文介绍了在 Maven 项目中使用 <exclusion>
标签解决版本不兼容问题的步骤,以及两个实际场景的示例说明。在开发项目过程中,遇到版本不兼容的情况,可以根据本文的介绍,通过查看项目依赖情况,确定要排除的包,并在 pom.xml 文件中使用 <exclusion>
标签解决问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 maven的pom.xml用