gradle Error: "You must set the property 'aspectjVersion' before applying the aspectj plugin" when using kotlin DSL

gradle Error: "You must set the property 'aspectjVersion' before applying the aspectj plugin" when using kotlin DSL

我想在使用 kotlin DSL 的 gradle 项目中配置 aspectJ 插件。

下面是我的 build.gradle.kts 文件。

    val aspectjVersion = "1.9.3"

    plugins {
        java
        id("aspectj.gradle") version "0.1.6"
    }

    group = "java-agents-demo"
    version = "1.0-SNAPSHOT"

    repositories {
        mavenCentral()
        mavenLocal()
        jcenter()
    }

    dependencies {
        implementation("org.aspectj","aspectjrt", aspectjVersion)
        implementation("org.aspectj","aspectjweaver", aspectjVersion)
        testCompile("junit", "junit", "4.12")
    }

    configure<JavaPluginConvention> {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

当我 运行 compileJava 项目时出现错误 "You must set the property 'aspectjVersion' before applying the aspectj plugin"。

我在构建文件中设置了 aspectjVersion,但我不知道其中的错误是什么。

任何人都可以帮助我以正确的方式为我的项目设置 aspectJ 插件吗?

所以val aspectjVersion = "1.9.3"定义了一个局部变量,但是插件正在寻找一个项目属性,请注意,这也意味着插件不能立即应用,因为插件块被评估在 build.gradle.kts 的其余部分之前(参见 limitations of plugin DSL),试试这个:

val aspectjVersion by extra("1.9.3")

plugins {
    java
    id("aspectj.gradle") version "0.1.6" apply false
}

apply(plugin = "aspectj.gradle")

有关详细信息,请参阅 extra properties 上的 Gradle 文档。

您还可以在 gradle.properties 文件中定义 aspectjVersion=1.9.5,因为它是在插件之前加载的。这也适用于 Gradle 7 兼容性。