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

时间:2018-10-12 21:06:37

标签: maven

我的项目正在使用另一个我无法控制的库commons-collection。我运行命令:

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

可以看到,“公共集合”是由jd-jimi3-data-sdk引入的,我无法更新。但是我想起了当前版本的“公共收集”存在潜在的安全问题,需要升级。如何在我的项目中实现?

1 个答案:

答案 0 :(得分:-1)

在您的项目中,如果您声明对所需的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-collection编写,并且据称未经其测试,因此可能会破坏您的项目!