首页 > 解决方案 > Gradle 无法识别 springboot buildInfo 插件

问题描述

我正在尝试将springboot buildInfo插件添加到我的build.gradle.kts,以便我可以生成文件并通过端点build-info.properties公开构建信息(即应用程序版本) 。/actuator/info但是,当我添加 buildInfo 插件时,我不断收到以下错误:

Unresolved reference: springBoot

我一直在参考以下Spring 文档,但它只是说只需添加插件并构建。

我是否将插件放在我的 gradle 文件中的正确位置?我是否需要另一个依赖项或插件引用才能使其正常工作?

这是我的主要部分的build.gradle.kts样子:

group = "com.walmart.muse.core-kt"
version = getLatestTagVersion()
java.sourceCompatibility = JavaVersion.VERSION_1_8
java.targetCompatibility = JavaVersion.VERSION_1_8

plugins {
    id("org.springframework.boot") version "2.2.0.RELEASE" apply false
    kotlin("jvm") version "1.3.50"
    kotlin("plugin.spring") version "1.3.50"
    kotlin("plugin.jpa") version "1.3.50"
    kotlin("plugin.allopen") version "1.3.50"
}

// This little code block is what is causing the error. 
// I want to use it to get buid-info.properties so I can hit `/actuator/info` 
// to expose my build info, but this isn't working :(
springBoot {
    buildInfo()
}


allprojects {
    repositories {
        maven(url = "https://my-company's-repository.com") // edited for privacy
    }

    apply(plugin = "org.jetbrains.kotlin.jvm")
    apply(plugin = "java")
    apply(plugin = "org.springframework.boot")
    apply(plugin = "io.spring.dependency-management")
    apply(plugin = "org.jetbrains.kotlin.plugin.allopen")
    apply(plugin = "org.jetbrains.kotlin.plugin.spring")
    apply(plugin = "org.jetbrains.kotlin.plugin.jpa")
    apply(plugin = "kotlin-spring")

    dependencies {
        implementation("org.springframework.boot:spring-boot-starter-actuator")
        implementation("org.apache.logging.log4j:log4j-api-kotlin:1.0.0")
        implementation("io.springfox:springfox-swagger2:2.7.0")
        implementation("io.springfox:springfox-swagger-ui:2.7.0")
        implementation("org.springframework.boot:spring-boot-starter-data-jpa")
        implementation("org.springframework.boot:spring-boot-starter-web")
        implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
        implementation("org.jetbrains.kotlin:kotlin-reflect")
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
        implementation("com.google.code.gson:gson:2.8.4")

        runtimeOnly("mysql:mysql-connector-java:5.1.6")

        testImplementation("org.junit.jupiter:junit-jupiter-api")
        testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")
        testImplementation("org.springframework.boot:spring-boot-starter-test") {
            exclude(module = "junit")
        }

        testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
    }

    allOpen {
        annotation("javax.persistence.Entity")
        annotation("javax.persistence.Embeddable")
        annotation("javax.persistence.MappedSuperclass")
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf("-Xjsr305=strict")
            jvmTarget = "1.8"
        }
    }

    tasks.withType<Test> {
        useJUnitPlatform()
    }

标签: spring-bootgradle-pluginspring-boot-actuatorgradle-kotlin-dsl

解决方案


原因是,您使用applygradle doc https://docs.gradle.org/current/userguide/kotlin_dsl.html#sec:kotlin_using_standard_api现在 gradle-kotlin-dsl 不能使用类型安全访问器。

代替

springBoot {
   buildInfo()
}

build.gradle.kts你必须使用

configure<org.springframework.boot.gradle.dsl.SpringBootExtension> {
  buildInfo()
} 

推荐阅读