【问题标题】:Maven is successfully built with the current version of a dependency, but still references to an older version使用当前版本的依赖项成功构建 Maven,但仍引用旧版本
【发布时间】:2020-06-16 05:52:00
【问题描述】:

我在本地 mvn .m2 注册表中成功安装了当前版本的依赖项,带有 mvn clean install(通过 cd 确认到 .m2 存储库)。

然后我修改了项目的pom.xml 以包含新的版本号:

        <dependency>
            <groupId>com.xyz.lib</groupId>
            <artifactId>xyz-lib-abc-model</artifactId>
            <version>1.4.0-SNAPSHOT</version>
        </dependency>

Maven 能够使用1.4.0-SNAPSHOT 成功构建,但是当我在 IntelliJ 中访问该项目时,它链接到旧版本 (0.1.1-SNAPSHOT) 而不是当前版本。

当我使用 `mvn dependency:tree 检查依赖树时,我有:

[INFO] +- com.xyz.lib:xyz-lib-abc-model:jar:1.4.0-SNAPSHOT:compile

这对我来说是正确的。

我曾尝试使用&lt;dependencyManagement&gt;,但它导致项目无法构建,并且无法检测到模型。

任何人都知道发生了什么以及如何让 maven 提取正确的版本?

提前谢谢你!

【问题讨论】:

标签: java maven


【解决方案1】:

尝试从 IntelliJ 中的本地 m2 重新导入依赖项,例如:

  • 在 IntelliJ 中打开项目视图
  • 右键单击 pom.xml 文件并
  • 选择 Maven - 重新导入 如果这对您有用,IntelliJ 将添加
    对项目的依赖项
  • 检查您需要的依赖项是否已添加到文件 - 项目中 结构 - 项目设置 - 库和文件 - 项目 结构 - 模块 - 依赖项

【讨论】:

  • @Katie 没问题。
【解决方案2】:

我在 IntelliJ 中看到了这个问题。 如果您不再需要旧版本,您可以 cd 到 .m2 目录并手动删除旧版本。 但是您需要保留这两个版本,您可以使用 pom.xml 将项目作为新项目打开。这将解决问题。

【讨论】:

  • 不幸的是,旧模型 (0.1.1-SNAPSHOT) 不是本地模型,并且不在我的本地注册表中。知道如何解决这个问题吗?
  • 您只需要从本地 pc 的本地 .m2 存储库中访问并删除它。远程工件被下载并存储在那里。如果从本地仓库访问旧版本的想法。
【解决方案3】:

尝试以下方法:

  1. 在 IntelliJ 中关闭项目
  2. 文件 --> 打开 ...
  3. 查找您的项目的 pom.xml,而不是想法项目文件
  4. 打开这个 pom.xml。它将根据这个新 pom.xml 中找到的信息重新构建所有依赖模型(我假设不再有旧依赖)。

DependencyManagement 部分在这种情况下无关紧要 - 提及它是因为你在问题中说过你已经尝试过 - 所以不要打扰,它会节省你一些时间:)

【讨论】:

    【解决方案4】:

    我的第一个猜测是你的 IDEA 中使用的 maven 类型不是你在终端中使用的类型。 :)

    您可以设置已安装的 maven 而不是捆绑的。


    或者另一种解决方案是在 pom.xml 中进行“刷新/重新导入”。它将根据您的 pom.xml 调查类路径并刷新需要的类路径。

    您应该在此处看到“重新导入”按钮

    如果您根本没有看到 Maven,那就意味着。您还没有将您的项目作为 Maven 项目添加到 IDEA。

    然后请执行以下操作 1.右键点击pom.xml 2. 2. 添加为maven项目

    【讨论】:

      猜你喜欢
      • 2012-12-15
      • 2017-07-17
      • 1970-01-01
      • 2016-09-18
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      相关资源
      最近更新 更多