java - Spring Boot 注释和导入在 Intellij IDE 上无法解析

标签 java spring spring-boot maven

这个项目运行良好。我只是在 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 时,出现此错误 -

[错误]无法在项目actuator-demo上执行目标:无法解析项目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: 无法传输 Artifact 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 ,原因短语:网关错误。 -> [帮助1]

我备份了 settings.xml 并将其删除。我干净地运行了 mvn,这次它从 mvn 远程存储库下载了 Artifact ,问题得到了解决。

不确定为我的工作项目和演示项目切换 settings.xml 的正确方法是什么,因为前者需要这些设置。

最佳答案

从命令行进行测试以确保 Maven 设置正确。如果 Maven 无法通过 CLI 运行,请修复它(也许您确实需要删除存储库并重新下载所有内容)。如果您有非来自在线存储库的 Artifact ,则删除存储库时请务必小心。

根据您的编辑,您需要为 Maven 使用不同的 settings.xml。这样做:

mvn --settings ~/.m2/settings-demo.xml 全新安装

这将使用备用设置文件。对于Intellij,您可以在maven设置中指定settings.xml文件(选中“Override”并放入新路径):

intellij maven settings

Maven 通过 CLI 工作 - Intellij 有时会变得愚蠢,尝试转到 File -> Invalidate Caches/Restart 并选择“Invalidate and Restart”

intellij caches

关于java - Spring Boot 注释和导入在 Intellij IDE 上无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59455328/

相关文章:

java - 从 FlatFileItemReader LineMapper 访问平面文件的名称

java - 从哪里可以获得 EWS JAVA API 2.0?

java - 如何将托管bean(非静态)注入(inject)静态方法?

java - Runnable 执行时间为每个 cron tick 两次

java - 如何链接两个不同类的对象?

java springrabbitmq让一个队列等待另一个队列

java - 在 Spring Boot 应用程序中使用 redis 创建存储库

java - 极少数在处理时如何表现?

java - 荷兰国旗 - 不适用于更大的阵列

java - JFrame 在小屏幕上显示不正确