如何检查Maven中的库冲突


出版日期:2021年1月20日。



INFOMARTION > 如何检查Maven中的库冲突

概述。

如何在Maven中检查库冲突。 Maven会自动解决jar库的依赖关系,但默认配置不会告知你冲突情况。 这就是在这种情况下如何在Maven中检查库冲突。

目录

  1. 当Maven中发生库冲突时
  2. 如何检查
  3. 摘要

1. 当Maven中发生库冲突时

Maven自动解决Java库的依赖问题。 自动依赖性解析意味着,如果你有一个你需要的Jar文件,它将自动获得运行该Jar所需的Jar。 关于具体库的依赖性解决方式的更多信息,请参见以下文章。

Maven如何自动解决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. 摘要

如果你想可靠地检测库冲突,我们推荐 "安装插件"。 引入插件可以确保任何冲突被注意到,因为构建会失败。

谢谢你一直看到最后。




■INFORMATION

请点击这里,进入信息首页。


■PROFILE

请点击这里查看简介。


■联系方式。

有关文章的查询,请在此与我们联系。