Gradle:无法获取主类的未知属性“ classesDir”

时间:2019-02-15 10:19:48

标签: gradle

根据documentation,我尝试使用Aspectj插件。

这是我在构建项目时收到的消息。

FAILURE: Build failed with an exception.

* Where:
Build file '/home/jesudi/projects/gradle-vscode/build.gradle' line: 22

* What went wrong:
A problem occurred evaluating root project 'security'.
> Failed to apply plugin [id 'aspectj.gradle']
   > Could not create task ':compileAspect'.
      > Could not get unknown property 'classesDir' for main classes of type org.gradle.api.internal.tasks.DefaultSourceSetOutput.

这是我的脚本:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "org.apache.meecrowave:meecrowave-gradle-plugin:1.2.6"
        classpath "gradle.plugin.aspectj:gradle-aspectj:0.1.6"
    }
}

plugins {
    id 'java'
}

project.ext {
    aspectjVersion = '1.9.2'
}

apply plugin: 'aspectj.gradle'
apply plugin: "org.apache.microwave.microwave"

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

dependencies {
    compile("org.apache.meecrowave:meecrowave-core:1.2.6")
    compile("org.apache.meecrowave:meecrowave-specs-api:1.2.6")
}

meecrowave {
    httpPort = 9090
    // most of the meecrowave core configuration
}

这是gradle -version的输出:

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9)
OS:           Linux 4.15.0-20-generic amd64

4 个答案:

答案 0 :(得分:1)

在gradle 4.x中不推荐使用classesDir属性,在gradle 5.x中将其删除(请参见release notes)。

该插件显然没有得到维护。

答案 1 :(得分:1)

可能您的插件不是问题的根源,而是Gradle的版本。 第一次,我在libgdx游戏(Android Studio)中遇到相同的错误。 在build.gradle(desktop)文件中,“ classDir被重命名为classesDirs,它起到了帮助作用。

from files(sourceSets.main.output.classesDirs)

答案 2 :(得分:1)

在Gradle 5.x中,此属性已从classesDirs重命名为classesDir

您可以找到更多信息here

答案 3 :(得分:0)

我收到了类似的错误消息,不是使用这个插件,而是使用 Grails (3.2.9) 创建的 HelloWorld 应用程序。就我而言,我已经使用 sdkman 将我当前的 Gradle 设置为 3.5 而不是 5,但问题仍然存在。事实证明,“grails” cli (https://github.com/grails/grails-core/blob/3.2.x/grails-shell/src/main/groovy/org/grails/cli/gradle/GradleUtil.groovy) 使用 Gradle 的默认 sdkman 版本(与“当前”版本不同)。 从 Grails 3.3.X 开始,可以在 gradle.properties 中设置“gradleWrapperVersion=3.5”,或者像以前一样使用 GRAILS_GRADLE_HOME 环境变量。