Spring Boot 注释和导入无法在 Intellij IDE 上解析
Posted
技术标签:
【中文标题】Spring Boot 注释和导入无法在 Intellij IDE 上解析【英文标题】:Spring boot annotations and imports not resolving on Intellij IDE 【发布时间】:2020-04-14 17:49:41 【问题描述】:这个项目运行良好。我只是在 pom.xml 中使用 Spring boot 版本,导入了一些新的 maven 项目,然后看到对于这些新项目,Springboot 注释和导入停止工作 -
Cannot resolve @SpringBootApplication
pom.xml -
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.in28minutes.database</groupId>
<artifactId>database-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>database-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.11.RELEASE</version>
<!--<version>1.5.2.RELEASE</version>-->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
我有另一个设置,它使用的是 spring boot 1.5.2.RELEASE。 我检查了这两个版本是否都在我的本地 .m2 存储库中。不知道是什么问题。
看来,所有导入的新项目都抛出了同样的问题。 例如。 https://github.com/callicoder/spring-boot-actuator-demo
更新
我意识到我的主要项目有一些依赖项(从远程服务器下载的 Maven 存储库)。这些在 .m2/settings.xml 中定义。
当我在命令行上运行 mvn install 时,我得到了这个错误 -
[错误] 无法在项目执行器演示上执行目标:无法解析项目 com.example:actuator-demo:jar:0.0.1-SNAPSHOT 的依赖项:无法在 org.springframework.boot:spring 收集依赖项-boot-starter-actuator:jar:2.1.11.RELEASE:无法读取 org.springframework.boot:spring-boot-starter-actuator:jar:2.1.11.RELEASE 的工件描述符:无法传输工件 org.springframework .boot:spring-boot-starter-actuator:pom:2.1.11.RELEASE from/to nexus (https://project.repository.com/repository/maven-public/):传输文件失败:https://project.repository.com/repository/maven-public/org/springframework/boot/spring-boot-starter-actuator/2.1.11.RELEASE/spring-boot-starter-actuator-2.1.11.RELEASE.pom。返回码是:502,ReasonPhrase:Bad Gateway。 -> [帮助 1]
我备份了 settings.xml 并将其删除。我运行 mvn clean fresh,这次它从 mvn 远程存储库下载了人工制品,问题得到了解决。
不确定为我的工作项目和演示项目切换 settings.xml 的正确方法是什么,因为前者需要这些设置。
【问题讨论】:
尝试清除缓存.. 或者在最坏的情况下,删除.m2
文件夹。也不要忘记检查我发现有一天设置的“在线模式”,我想知道为什么新的依赖关系没有解决几个小时。试一试:)
使用 mvn dependency:tree -Dincludes=[groupId]:[artifactId]:[type]:[version]
将您的依赖关系树打印到 fike 并查看您使用的依赖项和版本。
【参考方案1】:
从命令行测试以确保 Maven 设置正确。如果 maven 在 CLI 中不起作用,请修复它(也许您确实需要删除您的存储库并重新下载所有内容)。如果您有不是来自在线存储库的工件,删除您的存储库时要小心。
根据您的编辑,您需要为 Maven 设置不同的 settings.xml。这样做:
mvn --settings ~/.m2/settings-demo.xml clean install
这将使用备用设置文件。对于 Intellij,您可以在 maven 设置中指定您的 settings.xml 文件(选中“覆盖”并将新路径放入):
Maven 在 CLI 中工作 - Intellij 有时会变得愚蠢,尝试转到 File
-> Invalidate Caches / Restart
并选择“无效并重新启动”
【讨论】:
谢谢,我找到了问题。更新有问题。请检查您是否可以提出建议 - 不确定为我的工作项目和演示项目切换 settings.xml 的正确方法是什么,因为前者需要这些设置。 查看我的编辑 - 我不确定是否有办法在每个模块的基础上使用不同的 maven 设置,我现在使用 Gradle 是因为 Maven 正是这种废话。跨度> 【参考方案2】:我不认为这是 Spring Boot 问题,听起来更像是 Maven 问题,因为 Spring boot @SpringBootApplication
注释正在工作。从您的描述和查看您的pom.xml
来看,听起来您对 Maven 造成了一些冲突。
-
尝试重新导入您的依赖项。
如果这没有帮助,请删除您的
.m2/repository
文件夹并重新导入您的依赖项。
我在您的pom.xml
中注意到您没有 Spring Boot 启动器版本,这意味着 Maven 采用最接近根目录的版本,如果其 Spring Boot 版本低于 2.0,则 @SpringBootApplication 不是支持的。另外,尝试在 pom.xml
中添加一个版本到 spring-boot-starters
【讨论】:
以上是关于Spring Boot 注释和导入无法在 Intellij IDE 上解析的主要内容,如果未能解决你的问题,请参考以下文章
导入spring-boot-starter-test依赖报错?
即使安装了注释,Spring Boot Xml 查看也不起作用
spring boot 导入xml配置文件所需注解和禁用自动配置类的注解
导入eclipse gradle spring boot项目后,Lombok无法在intellij idea 18.1版本中工作