Maven 加载了错误版本的依赖项

Eth*_*roy 5 maven

在我的 maven pom.xml 我有以下依赖项:

<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>Chart.js</artifactId>
    <version>2.0.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

当我构建它时,maven 加载 Version1.1.1而不是2.0.2. 我无法解释为什么会发生这种情况。mvn dependency:tree给我以下输出:

[INFO] my.group:mypackage:war:0.0.1-SNAPSHOT
[INFO] ...
[INFO] +- org.webjars.bower:Chart.js:jar:1.1.1:compile
[INFO] +- org.webjars.bower:angular-chart.js:jar:0.10.2:compile
[INFO] ...
Run Code Online (Sandbox Code Playgroud)

所以,Chart.js是我的项目的直接依赖项,没有其他依赖项依赖Chart.js并强制加载 version 1.1.1。即使我查看 IntelliJ 中的有效 pom,也没有对 version 的依赖1.1.1,只有对2.0.2.

知道为什么 maven 加载错误的版本吗?

Tho*_*ous 4

您的问题是 angular-chart.js:jar:0.10.2 依赖于 Chart.js 1.1.1。你们这里有冲突。

查看此链接以查看所有依赖项: https://mvnrepository.com/artifact/org.webjars.bower/angular-chart.js/0.10.2

添加 angular-chart.js 依赖项时需要添加排除标签:

<dependency>
  <groupId>org.webjars.bower</groupId>
  <artifactId>angular-chart.js</artifactId>
  <version>0.10.2</version>
  <exclusions>
      <exclusion> 
          <groupId>org.webjars.bower</groupId>
          <artifactId>Chart.js</artifactId>
      </exclusion>
  </exclusions>
</dependency>
<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>Chart.js</artifactId>
    <version>2.0.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,“dependency:tree”显示了如何首先添加依赖项,而不是最终确定其版本。然而,还有其他工具可以实现这一点。例如,在 IntelliJ IDEA 中,您可以看到一个依赖关系图,显示哪些依赖关系被抑制为重复项等。 (3认同)