为什么Maven为依赖项jar下载了一个较短的版本?

时间:2019-03-11 03:01:49

标签: java maven

我正在使用以下配置。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
</dependency>

poi-ooxml-3.14.pom 中,我可以看到依赖的 poi 版本是 3.14

 <dependencies>
    <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>3.14</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>3.14</version>
    </dependency>
  </dependencies>

但是在依赖关系树的输出中。 poi 3.10.1 已下载,怎么会发生?这有什么规则?谢谢。

enter image description here

以下(mvn依赖关系:树)是唯一包含3.10.1的地方。

[INFO] +- org.apache.poi:poi-ooxml:jar:3.14:compile
[INFO] |  +- org.apache.poi:poi:jar:3.10.1:compile
[INFO] |  +- org.apache.poi:poi-ooxml-schemas:jar:3.14:compile
[INFO] |  \- com.github.virtuald:curvesapi:jar:1.03:compile

1 个答案:

答案 0 :(得分:0)

由于org.apache.poi,您将获得 poi 3.10.1 -poi-ooxml-schemas可传递依赖项,它会覆盖您的实际依赖项声明。 您应该尝试在pom.xml中的以下条目输入,以避免不必要的 poi

版本
 <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>3.14</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>3.14</version>
            <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>