如何更新或替换Maven项目中其他库的依赖项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新或替换Maven项目中其他库的依赖项?相关的知识,希望对你有一定的参考价值。

我的项目正在使用另一个我无法控制的库公共集合。我运行命令:

mvn dependency:tree -Dverbose -Dincludes=commons-collections

Verbose not supported since maven-dependency-plugin 3.0
[INFO] com.jde.jnlu:jnlu-qe-web:war:1.0.0-SNAPSHOT
[INFO] - com.jde.jimi3.data:jd-jimi3-data-sdk:jar:3.0-SNAPSHOT:compile
[INFO]    - com.jde.jmq:jmq-client-spring:jar:2.1.2:compile
[INFO]       - com.jde.jmq:jmq-client-core:jar:2.1.2:compile
[INFO]          - com.jde.jmq:jmq-client-json:jar:1.2.9:compile
[INFO]             - commons-beanutils:commons-beanutils:jar:1.9.2:compile
[INFO]                - commons-collections:commons- 
             collections:jar:3.2.1:compile

可以看出,“commons-collections”是由jd-jimi3-data-sdk引入的,我无法更新。但我被提醒当前版本的“commons-collection”存在潜在的安全问题,需要进行升级。我怎样才能在我的项目中实现这一目标?

答案

在您的项目中,如果您声明对所需的commons-collection版本的显式依赖,Maven将使用它。请参阅Maven文档:Resolving conflicts using the dependency tree

如果你想确定,你也可以(除了上面的内容)从你的jd-jimi3-data-sdk依赖项中排除commons-collection。就像是:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.jde.jimi3.data</groupId>
      <artifactId>jd-jimi3-data-sdk</artifactId>
      <version>3.0-SNAPSHOT</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-collections</groupId>
          <artifactId>commons-collections</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

这也包含在Maven文档中:Dependency Exclusions

警告:由于您使用的库 - jd-jimi3-data-sdk - 不是使用此版本的commons-collections编写的,并且据称未使用它进行测试,这可能会破坏您的项目!

以上是关于如何更新或替换Maven项目中其他库的依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins Maven 发布:替换快照依赖

使用maven替换项目依赖中的字节码

mvn 命令用于更新依赖项中的版本和一个使用该依赖项的项目

如何让 IntelliJ IDEA 从 Maven 更新我的依赖项?

如何在 Maven 中为依赖项指定存储库

命令行上的 Maven 依赖项更新