1

我们的warfile 不包含jarfile 的预期SNAPSHOT-Version,它包含通过另一个依赖项的较旧版本。

简化依赖:树

war-x.x.x-SNAPSHOT
\- jar1-x.x.x-SNAPSHOT
   +- jar2-x.x.x
   |  +- problemjar-x.x.x
   +- jar3-x.x.x-SNAPSHOT

jar3-xxx-SNAPSHOT 具有依赖项“problemjar-xxy-SNAPSHOT”(较新版本),但 war 项目构建(和依赖项:树)包含来自“jar2-xxx”的“problemjar-xxx”。

现在,我们为“jar2-xxx”“排除”“problemjar-xxx”。

但是很高兴知道这种行为的原因,恕我直言,排除只是一种解决方法。

笔记:

  • “jar3-xxx-SNAPSHOT”中的依赖项“problemjar-xxy-SNAPSHOT”“提供”。
  • Maven 版本是 3.2.5
  • 上面简化的dependency:tree中的levels是正确的,所以旧版本的路径不会比新SNAPSHOT版本的路径短

编辑:项目结构

war 和 jar1 是一个父 pom 的子级,简化的依赖项:tree 来自 war 项目,其中 jar1 项目作为依赖项。其他是正常/外部依赖项,从 war 项目中可以看出,它也适用于 jar1。

4

2 回答 2

3

Maven 不会依赖树中获取最新版本。

它采用最接近的版本,在您的情况下,这是它遇到的第一个版本。

如果要强制 Maven 采用特定版本,最好使用<dependencyManagement>而不是排除。

于 2018-06-20T11:06:23.087 回答
0

确保以下几点:

1)每个子模块应该从它的父模块获取它的版本,即没有<version>标签只有一个<parent>包含版本的标签。

2)当您从同一个项目中调用依赖项时,请始终按如下方式执行:

<version>${project.version}</version>
于 2018-06-20T10:45:48.587 回答