随机无法识别Maven依赖

问题描述 投票:3回答:1

我正在使用HTML和Thymeleaf作为我的前端开发Java Spring Boot Web应用程序。我遇到的问题是,当我尝试运行项目时,我的ThymeleafConfig类会随机出错。我将在下面详细解释,但首先是我的代码。

Pom.xml依赖:

<dependency>
     <groupId>org.thymeleaf.extras</groupId>
     <artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>

ThymeleafConfig类:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringSecurityDialect springSecurityDialect() {
        return new SpringSecurityDialect();
    }
}

所以为了进一步解释,我的代码会很好(根据我的IDE),我的任何一行都没有错误,准备运行。我将运行我的应用程序类来运行我的项目,我将得到编译错误。

IntelliJ会自动打开包含错误的文件,这是我的ThymeleafConfig类。出现错误时,导入语句import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;行将显示为灰色且无法识别。在课堂上造成错误。

要修复它,我右键单击我的pom.xml文件 - > Maven - > Reimport。这将重新导入我的所有依赖项,一切都将恢复正常。

我还想强调,每次运行应用程序时都不会发生这种情况。有时它会连续发生3次,有时我会在错误再次出现之前运行5次以上。

我试过mvn clean没有解决问题。我还将依赖项移动到pom.xml文件中的另一行。

编辑:这是我的Application.java类

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

要运行应用程序,我右键单击此文件,然后单击运行“应用程序”按钮。

java maven spring-boot intellij-idea dependencies
1个回答
0
投票

Spring boot已经包含了thymeleaf(一个不同的版本),你可能在类路径上有多个版本。 Spring Boot在文档中非常清楚thymeleaf:

Spring boot 1.4.2's documentation使用百里香叶3.0.0

默认情况下,spring-boot-starter-thymeleaf使用Thymeleaf 2.1。如果您使用的是spring-boot-starter-parent,则可以通过覆盖thymeleaf.version和thymeleaf-layout-dialect.version属性来使用Thymeleaf 3,例如:

<properties>
    <thymeleaf.version>3.0.0.RELEASE</thymeleaf.version>
    <thymeleaf-layout-dialect.version>2.0.3</thymeleaf-layout-dialect.version>
</properties>

...

如果您使用任何其他自动配置的Thymeleaf Extras(Spring Security,Data Attribute或Java 8 Time),您还应该将其每个版本覆盖为与Thymeleaf 3.0兼容的版本。

如果你看看spring-boot-dependency's pom on github,百里香叶属性是:

<thymeleaf.version>2.1.5.RELEASE</thymeleaf.version>          
<thymeleaf-extras-springsecurity4.version>2.1.2.RELEASE</thymeleaf-extras-springsecurity4.version>

<thymeleaf-extras-conditionalcomments.version>2.1.2.RELEASE</thymeleaf-extras-conditionalcomments.version>

<thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version>

<thymeleaf-extras-data-attribute.version>1.3</thymeleaf-extras-data-attribute.version>

<thymeleaf-extras-java8time.version>2.1.0.RELEASE</thymeleaf-extras-java8time.version>

Recap

我相信你至少需要定义以下属性(可能需要更多一些以避免版本不匹配?):

  • thymeleaf.version
  • thymeleaf-额外springsekyrity4.version
© www.soinside.com 2019 - 2024. All rights reserved.