【问题标题】:IntelliJ How to force downgrade dependency version?IntelliJ 如何强制降级依赖版本?
【发布时间】:2019-09-17 22:01:55
【问题描述】:

我在 IntelliJ 中的 maven 依赖项版本更改方面一直存在问题。每当我尝试使用以前版本的库并更改 pom.xml 中的依赖项版本时,什么都没有发生。 Maven 继续使用更新版本的库。

例如我想用:

<dependency>
            <groupId>org.springframework.security.oauth.boot</groupId>
            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
            <version>2.0.1.RELEASE</version>
 </dependency>

但 Maven 存储库已保存 2.0.2 版:

<dependency>
            <groupId>org.springframework.security.oauth.boot</groupId>
            <artifactId>spring-security-oauth2-autoconfigure</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>

所以对于我的项目,使用的是 2.0.2.RELEASE 版本。

我先尝试重新导入项目。然后我尝试“重新导入所有 Maven 项目”。然后我检查了 Settings > Maven > Always update snapshots。我还尝试打开项目设置并从那里删除依赖项,但是在重新导入时,2.0.2 版本将被导入项目中。目前唯一可行的方法是从“.m2”文件夹中手动删除该文件夹。

不应该严格遵循库版本,不应该将 2.0.1 v 版本用于我的项目吗?

【问题讨论】:

  • 也许 IntelliJ 正在缓存您的依赖项。我遇到了很多问题,解决问题的方法是通过 File-&gt;Invalidate Caches / Restart 清理缓存

标签: maven intellij-idea


【解决方案1】:

当您更改工件的版本时,maven 将使用相同的版本。它永远不会使用新版本或旧版本。由于您使用的是 intellij,因此您可以检查哪些 jar 文件及其使用的版本。请参阅下面的屏幕截图。 您可以如下所示展开外部库,您可以检查 pom.xml 中使用的依赖项。

此外,您还可以签入命令提示符。转到命令提示符并指向项目目录并键入以下命令。

mvn install dependency:copy-dependencies

您可以在目标文件夹中查看所有必需的依赖项以及版本信息。 我建议您不要删除 .m2 目录,因为您可能需要重新下载所有依赖项。

【讨论】:

    【解决方案2】:

    如果你想强制使用特定的依赖版本,你可以使用:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.security.oauth.boot</groupId>
                <artifactId>spring-security-oauth2-autoconfigure</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    这将排除依赖项,除非它真正被使用,然后如果它被使用,它只使用你指定的版本。

    【讨论】:

      【解决方案3】:

      不清楚是什么问题。

      无论本地是否存在依赖关系,Repo 都可以包含所有内容。 另外,Idea 本身并没有解决依赖关系,我们使用 maven api 来解决它们。

      默认情况下,maven 采用离根最近的依赖项(参见https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html) 在根 pom 中指定显式依赖项应强制使用此版本。

      能否提供mvn依赖:树输出和对应的IDEA maven依赖图(如果你有IU)?

      如果Idea解决了maven以外的其他依赖版本,请在https://youtrack.jetbrains.com/issues填写问题

      【讨论】:

        猜你喜欢
        • 2016-09-12
        • 2021-04-09
        • 1970-01-01
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        • 2019-12-29
        • 2020-09-26
        • 2019-12-01
        相关资源
        最近更新 更多