【问题标题】:gradle Error: "You must set the property 'aspectjVersion' before applying the aspectj plugin" when using kotlin DSL使用 kotlin DSL 时,gradle 错误:“您必须在应用 aspectj 插件之前设置属性 'aspectjVersion'”
【发布时间】:2019-12-03 05:18:54
【问题描述】:

我想在我使用 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 项目时,我收到错误“您必须在应用 aspectj 插件之前设置属性 'aspectjVersion'”。

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

谁能帮我以正确的方式为我的项目设置 aspectJ 插件?

【问题讨论】:

    标签: gradle build.gradle gradle-plugin gradle-kotlin-dsl


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      所以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 文档。

      【讨论】:

      • @RajkumarNatarajan 我编辑了答案以显示更完整的示例;基本上由于插件 DSL 的工作方式,这个插件不能立即应用,因为它会在评估 build.gradle.kts 的其余部分之前检查这个属性,所以在设置这个属性之前。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多