【问题标题】:Spring boot project doesn't run on Gradle local RepositorySpring Boot 项目不在 Gradle 本地存储库上运行
【发布时间】:2021-01-24 06:55:24
【问题描述】:

下面是我的 build.gradle 文件

plugins {
    id 'org.springframework.boot' version '2.3.4.RELEASE'

    id 'java'
}

group = 'jwt.demo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    flatDir {
        dirs 'C://Users//David//.gradle//caches//modules-2//files-2.1'
    }
}
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter:2.3.4.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web:2.3.4.RELEASE'


}
test {
    useJUnitPlatform()
}

当我点击 intelliji 上 Gradle 面板的构建和组装图标时,它显示“BUILD SUCCESFUL”但是当我添加 Spring Boot 注释 @SpringBoot 时,它显示错误“cannot解析符号 SpringbootApplication”。好像没有编译成功。任何想法如何解决它?

【问题讨论】:

标签: java spring spring-boot maven gradle


【解决方案1】:

TL;DR 使用Spring Initializr 进行正确的项目设置。原因如下。

flatDir 存储库,尤其是定义 Gradle 缓存目录作为源不适合开发 Spring Boot 应用程序,原因如下:

  • Gradle 共享缓存目录是 Gradle 的内部构造,用于存储来自远程存储库的已解析工件。默认情况下它最初是空的。已解决但未使用的工件在一段时间后会被删除。缓存的结构也不适用于flatDir,它需要jar,而不是定义目录中的目录结构。
  • flatDir 不支持任何元数据格式,如 Ivy XML 或 Maven POM 文件,因此依赖信息不可用。 spring-boot-starterspring-boot-starter-web 在各自的 POM 中定义了许多依赖项。单独使用它们毫无用处。

您最好使用适当的(公共)Maven 存储库。 Gradle 内置了 Maven Central (mavenCentral())、JCenter (jcenter()) 和 Google (google())。 Gradle 缓存已解析的工件,因此它们通常只解析一次。在官方文档中阅读更多相关信息:Declaring a publicly-available repository

您可能还想使用Spring Initializr,它将为您生成一个工作项目和构建文件。

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2023-02-02
    • 2019-12-27
    • 2020-07-21
    • 1970-01-01
    • 2014-07-03
    • 2021-10-29
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多