为什么在将 spring-boot-starter-parent 父项目更新到最后一个 2.2.5.RELEASE 后,在构建 Spring Boot 项目时会出现此错误? [英] Why am I obtaining this error building a Spring Boot project after updating the spring-boot-starter-parent parent project to the last 2.2.5.RELEASE?

查看:33
本文介绍了为什么在将 spring-boot-starter-parent 父项目更新到最后一个 2.2.5.RELEASE 后,在构建 Spring Boot 项目时会出现此错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 Spring Boot 的新手,我在尝试更新 spring-boot-starter-parent 父项目时遇到了一些问题.

I am pretty new in Spring Boot and I am experiencing some problem trying to update the spring-boot-starter-parent parent project.

所以,一开始我有这个 pom.xml 文件(它工作正常,我可以构建项目并且我没有问题):

So, at the beginning I have this pom.xml file (it works fine, I can build the project and I have no problem):

<?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.springboot</groupId>
    <artifactId>excel-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Excel API with Spring Boot</name>
    <description>Spring Boot - working with Excel API</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.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-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-data</artifactId>
        </dependency>

        <!-- Start of excel dependencies -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.11</version>
        </dependency>
        <!-- End of excel dependencies -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

如您所见,此 pom.xml 文件包含此 部分:

As you can see this pom.xml file contains this section:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

如果我做错了断言,请纠正我:根据我的理解,这意味着我的 pom.xml 文件是 pom.xml 文件的另一个 pom.xml 文件的子文件strong>spring-boot-starter-parent 项目具有 1.5.9.RELEASE 版本.这个推理正确吗?如果这个 pom.xml 文件是在哪里定义的?

Please correct me if I am doing wrong assertion: from what I understoot it means that my pom.xml file is child of another pom.xml file of the spring-boot-starter-parent project having version 1.5.9.RELEASE. Is it this reasoning correct? In case where is defined this pom.xml file?

所以目前我成功地使用了这个父项目的 1.5.9.RELEASE 版本.它很旧,我想更新到最后一个2.2.5.RELEASE,如下所示:

So at the moment I am succesfully using the 1.5.9.RELEASE version of this parent project. It is pretty old, I want to update it to the last one that is the 2.2.5.RELEASE, as shown here:

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent

所以我只更改了之前的pom.xml 文件的 部分:

So I changed only the section of the previous pom.xml file in this way:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

问题在于尝试通过此 Maven 命令构建项目:

The problem is that trying to build the project by this Maven command:

mvn clean install -DskipTests=true

我收到以下错误消息:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[6,44] package org.springframework.boot.web.support does not exist
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[9,34] cannot find symbol
  symbol: class SpringBootServletInitializer
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[15,9] method does not override or implement a method from a supertype
[INFO] 3 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.349 s
[INFO] Finished at: 2020-03-20T05:48:14-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project excel-api: Compilation failure: Compilation failure: 
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[6,44] package org.springframework.boot.web.support does not exist
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[9,34] cannot find symbol
[ERROR]   symbol: class SpringBootServletInitializer
[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[15,9] method does not override or implement a method from a supertype
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

推荐答案

这是从 1.x 到 2.x 的主要 Spring 版本升级.在这样的主要版本升级过程中,通常会发生重大变化,例如包重组、删除不推荐使用的类/方法等.此类升级最好参考某种迁移指南.您可以参考官方迁移指南 或其他一些博客,例如 this.

This is a major spring version upgrade from 1.x to 2.x. During such major version upgrade there are usually breaking changes such as package restructuring, removal of deprecated classes/methods, etc. It is best to refer to some sort of migration guide for such upgrade. You can refer to the official migration guide or some of other blog such as this.

Spring 提供了一个依赖模块,可以将其添加到您的 pom 文件中.此模块分析应用程序并提供所需更改的诊断输出.

Spring provides a dependency module which can be added to your pom file. This module analyses the application and provides diagnostic output for the changes required.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

对于问题中提出的具体问题;

For the specific issue raised in the question;

[ERROR] /home/developer/git/SOC-dashboard/src/main/java/com/springboot/excelapi/Application.java:[9,34] cannot find symbol
[ERROR]   symbol: class SpringBootServletInitializer

SpringBootServletInitializer 现在可以从 org.springframework.boot.web.servlet.support 包获得.

The SpringBootServletInitializer is now available from org.springframework.boot.web.servlet.support package.

这篇关于为什么在将 spring-boot-starter-parent 父项目更新到最后一个 2.2.5.RELEASE 后,在构建 Spring Boot 项目时会出现此错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆