如何检查Maven中的库冲突
出版日期:2021年1月20日。
INFOMARTION > 如何检查Maven中的库冲突
概述。
如何在Maven中检查库冲突。 Maven会自动解决jar库的依赖关系,但默认配置不会告知你冲突情况。 这就是在这种情况下如何在Maven中检查库冲突。
目录
- 当Maven中发生库冲突时
- 如何检查
- 2-1. 引入插件
- 2-2. 通过命令进行预构建确认。
- 摘要
1. 当Maven中发生库冲突时
Maven自动解决Java库的依赖问题。 自动依赖性解析意味着,如果你有一个你需要的Jar文件,它将自动获得运行该Jar所需的Jar。 关于具体库的依赖性解决方式的更多信息,请参见以下文章。
然而,当图书馆冲突发生时,它们不会被自动解决。 更重要的是,如果你没有设置好,你甚至无法检测到冲突。 我们想介绍一下如何检查图书馆的冲突。
2. 如何检查
有两种主要的方法来检查图书馆的冲突情况
- 引入插件
- 通过命令进行预构建确认。
安装插件 "是一种向pom.xml添加设置的方法。 构建前用命令检查 "字面意思是在构建前用命令手动检查。 我想具体解释一下如何做到这一点。
2-1. 引入插件
以下Maven网站可能会有所帮助。
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
在pom.xml中添加以下设置。
pom.xml
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
如果插入了上述设置,就会出现以下错误,如果在构建时有库冲突,则构建失败。
[WARNING]
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.poi:poi:3.17
+-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.commons:commons-collections4:4.0
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.
如果在没有插件的情况下进行构建,则不会出现错误,构建会正常终止。 如果你想检测冲突,一定要设置这个。
2-2. 通过命令进行预构建确认。
通过以下命令检查依赖关系
mvn dependency:tree -Dverbose
命令,如果有冲突则显示 "省略冲突"。 也可以把输出范围缩小到只有那些存在冲突的区域,如以下命令。 ※查找 "是Windows的命令。 对于Linux,这就是 "grep"。
mvn dependency:tree -Dverbose | find "omitted for conflict"
可以通过查看上述命令的结果来检查图书馆冲突。
3. 摘要
如果你想可靠地检测库冲突,我们推荐 "安装插件"。 引入插件可以确保任何冲突被注意到,因为构建会失败。
谢谢你一直看到最后。