java - 为什么找不到spring Boot {}?

标签 java spring spring-boot gradle gradle-kotlin-dsl

我有一个看起来像这样的构建脚本:

plugins {
    id("org.springframework.boot") version "2.2.2.RELEASE" apply false
    id("io.spring.dependency-management") version "1.0.9.RELEASE" apply false
    id("java")
}

repositories {
    mavenCentral()
}

allprojects {
   // ...
}

project("core") {
    apply(plugin = "org.springframework.boot")
    apply(plugin = "io.spring.dependency-management") // plugin to manage spring dependencies

    dependencies {
        implementation("org.springframework.boot:spring-boot-starter-web")
        testImplementation("org.springframework.boot:spring-boot-starter-test")
    }

    springBoot {
        mainClassName = "com.example.App"
    }

}


但是,在构建时,gradle 提示说
springBoot {

^ Unresolved reference: springBoot

如果我删除 apply false关于 plugins {} 中的 spring 插件阻止一切正常。

我不明白的是为什么springBoot{}调用apply(plugin = )也无法解决对于“核心”子项目中的 Spring 启动?
我的理解是在 plugins {}我将插件导入项目但尚未应用。稍后在 core子项目我应用插件并配置spring boot。

最佳答案

来自成绩单https://docs.gradle.org/current/userguide/kotlin_dsl.html#type-safe-accessors

在这种情况下,构建脚本不能使用类型安全的访问器,因为 apply() 调用发生在构建脚本的主体中。您必须改用其他技术,如下所示:

类型安全访问器不适用于以下贡献的模型元素:

通过 apply(plugin = "id") 方法应用的插件

项目构建脚本

脚本插件,通过 apply(from = "script-plugin.gradle.kts")

通过跨项目配置应用的插件

您必须使用如下配置选项,

configure<SpringBootExtension> {
      mainClassName = “ com.example.App”
}

关于java - 为什么找不到spring Boot {}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61720060/

相关文章:

java - java中计算两个int的平均值并转换为double

javascript - 如何使用 Nashorn 将 Javascript 对象从 Java 传递到 Javascript

java - API证书不受浏览器信任,我该怎么办?

spring-mvc - Spring/Thymeleaf 在处理@PostMapping 时抛出 "Cannot create a session after the response has been committed"

java - 如何在apache ignite缓存配置xml文件中提供多个静态IP

java - 如何在打开的 csv 中获取并验证 csv header ?

java - Logback SMTPAppender 仅发送最后一封电子邮件

java - 使用 MOA 对新示例进行分类?

spring - spring中的简单推送通知

spring - 为什么 Spring Data JPA 和 QueryDSL 中会使用重复的变量?