Maven IntelliJ如何强制降级依赖项版本?

Maven IntelliJ如何强制降级依赖项版本?,maven,intellij-idea,Maven,Intellij Idea,我对IntelliJ中的maven依赖项版本更改一直存在问题。每当我尝试使用库的早期版本并更改pom.xml中的依赖项版本时,都不会发生任何事情。Maven继续使用较新版本的库 例如,我想使用: <dependency> <groupId>org.springframework.security.oauth.boot</groupId> <artifactId>spring-security-oaut

我对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>

org.springframework.security.oauth.boot
spring-security-oauth2-autoconfigure
2.0.1.1发布
但Maven repo保存了2.0.2版:

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

org.springframework.security.oauth.boot
spring-security-oauth2-autoconfigure
2.0.2.1发布
因此,对于我的项目,使用的是2.0.2.0版本

我先尝试重新导入项目。然后我尝试“重新导入所有maven项目”。然后我检查了设置>Maven>始终更新快照。我还尝试打开项目设置并从中删除依赖项,但在重新导入时,将在项目中导入2.0.2版本。目前唯一有效的方法是从“.m2”文件夹中手动删除该文件夹


是否应该严格遵守库版本?是否应该在我的项目中使用版本2.0.1 v?

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

<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>

org.springframework.security.oauth.boot
spring-security-oauth2-autoconfigure
2.0.1.1发布

这将排除依赖项,除非它实际被使用,如果它被使用,它将只使用您指定的版本。

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

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

mvn install dependency:copy-dependencies
您可以在目标文件夹中查看所有必需的依赖项以及版本信息。
我建议您不要删除.m2目录,因为您可能需要再次下载所有依赖项。

不清楚问题出在哪里

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

默认情况下,maven接受距离根最近的依赖项(请参阅) 在根pom中指定显式依赖项应强制使用此版本

您能提供mvn依赖关系:树输出和相应的IDEA maven依赖关系图(如果您有IU)吗


如果Idea解决了maven以外的其他依赖项版本,请在

处填写一个问题,可能IntelliJ正在缓存您的依赖项。我在这方面遇到了很多问题,解决这个问题的方法是通过执行
File->Invalidate Caches/Restart