maven-dependency-plugin:2.1:tree (default-cli) @ MavenExamples ---
[INFO] com.howtodoinjava.demo:MavenExamples:jar:0.0.1-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] - org.springframework:spring-core:jar:4.3.5.RELEASE:compile
[INFO] - commons-logging:commons-logging:jar:1.2:compile


了解它如何通知 spring 依赖`commons-logging`。 同样,您可以使用此命令获取完整的传递依赖项信息。

## Maven 依赖排除

除了由传递依赖引起的版本不匹配问题之外,项目工件和部署平台(例如 Tomcat 或其他服务器)之间的工件之间可能存在**版本不匹配**。

为了解决此类版本不匹配的问题,maven 提供了`<exclusion>`标记,以打破传递依赖项。

例如,当您在类路径中具有 JUnit4.12 并包括 DBUnit 依赖项时,则需要删除 JUnit 3.8.2 依赖项。 可以使用`exclusion`标签完成。

```java
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>${junit.version}</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.dbunit</groupId>
	<artifactId>dbunit</artifactId>
	<version>${dbunit.version}</version>
	<scope>test</scope>
	<exclusions>
		<!--Exclude transitive dependency to JUnit-3.8.2 -->
		<exclusion>
		    <artifactId>junit</artifactId>
		    <groupId>junit</groupId>
		 </exclusion>
	</exclusions>
</dependency>

工件版本范围

在包含依赖项的同时,您可以自由地为任何工件指定版本范围。 要给出版本范围,可以使用以下符号:

  • 括号符号()表示包含范围
  • 括号符号[]表示排除范围
  • 逗号分隔的子集

版本范围示例

让我们看一些示例,以更好地了解有关指定版本范围的信息。

范围 含义
1.2 等于 1.2 或以 1.2 开头的版本
(,1.2] 小于 1.2 的任何版本。 包含 1.2 版。 x <= 1.2
(,1.2) 小于 1.2 的任何版本。 1.2 版除外。 x < 1.2
[1.2] 仅限于 1.2 版。 x == 1.0
[1.2,) 任何大于 1.2 的版本。 包含 1.2 版。 x >= 1.2
(1.2,) 任何大于 1.2 的版本。 1.2 版除外。 x > 1.2
(1.2,2.2) 在 1.2 和 2.2 之间的版本。 两者都排除在外。 1.0 < x < 2.0
[1.2,2.2] 在 1.2 和 2.2 之间的版本。 两者都包括在内。 1.2 <= x <= 2.2
(,1.2],[2.2,) 小于 1.2 或大于 2.2 的版本。 两者都包括在内。 x <= 1.2 or x >= 2.2

将我的问题放在评论部分。