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

时间:2019-09-16 14:22:48

标签: maven intellij-idea

我对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版本。

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

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

3 个答案:

答案 0 :(得分:1)

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

enter image description here

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

mvn install dependency:copy-dependencies

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

答案 1 :(得分:0)

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

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

此操作将排除依赖项,除非它被实际使用,然后再被依赖,则仅使用您指定的版本。

答案 2 :(得分:0)

不清楚是什么问题。

回购可以包含所有内容,无论本地是否存在依赖项。 另外,Idea不会自行解决依赖关系,我们使用maven api来解决它们。

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

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

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