You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle构建文件Liquibase配置报错:'main'无法作为函数调用

错误原因与解决方法

错误原因

你使用的是Gradle Kotlin DSL,但直接照搬了Liquibase插件的Groovy DSL配置写法。在Kotlin DSL中,liquibase.activities是NamedDomainObjectContainer类型的容器,Kotlin作为静态类型语言,不允许像Groovy那样通过main {}这种动态函数调用的方式创建Activity。此时Gradle会把main误识别为源码集上下文的对象,导致类型不匹配、属性无法解析的一系列错误。

解决方法

修改liquibase配置块,调用容器的create()方法来定义Activity,替换原来的main {}写法。修改后的配置如下:

liquibase {
    activities {
        create("main") {
            changeLogFile = "some/url/to/changelog/yaml/file"
            url = "jdbc:mysql://localhost:3306/someDatabase"
            username = "some-user"
            password = "some-password"
        }
    }
}

完整修改后的build.kts示例

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.liquibase.gradle") version "2.2.1"
    kotlin("jvm") version "1.9.23"
    // Spring Boot项目建议添加以下插件,自动处理版本依赖兼容
    id("org.springframework.boot") version "3.2.5"
    id("io.spring.dependency-management") version "1.1.4"
}

java {
    sourceCompatibility = JavaVersion.VERSION_21
}

repositories {
    mavenCentral()
    maven { url = uri("https://repo.spring.io/milestone") }
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.liquibase:liquibase-core")
    runtimeOnly("com.mysql:mysql-connector-j")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xjsr305=strict"
        jvmTarget = "21"
    }
}

liquibase {
    activities {
        create("main") {
            changeLogFile = "some/url/to/changelog/yaml/file"
            url = "jdbc:mysql://localhost:3306/someDatabase"
            username = "some-user"
            password = "some-password"
        }
    }
}

额外提示

  • 添加Spring Boot插件和依赖管理插件后,无需手动指定Liquibase等依赖的版本,插件会自动维护版本兼容性。
  • 配置完成后,可通过./gradlew update命令执行Liquibase变更脚本。

内容的提问来源于stack exchange,提问作者DarkNetFan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:22:37