我对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版吗?
答案 0 :(得分:1)
当您更改工件的版本时,maven将使用相同的版本。它永远不会使用新版本或旧版本。由于您正在使用intellij,因此可以检查哪些jar文件及其使用的版本。请参阅下面的屏幕截图。 您可以如下所示扩展外部库,并可以检查pom.xml中使用的依赖项。
此外,您还可以在命令提示符下签入。转到命令提示符,指向项目目录,然后键入以下命令。
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处填写问题