Gradle 带有 AutoValue 和 FreeBuilder 的插件 confusion/conflict

Gradle plugin confusion/conflict with AutoValue and FreeBuilder

我正在试验 Gradle/IntelliJ 和各种 Java builders/containers。但是,我无法在同一项目中同时配置 org.inferred.FreeBuilder 和 com.google.auto.value.AutoValue。

使用下面的 build.gradle 文件,我能够成功地编译一个 class 用 AutoValue 注释的,(来自 AutoValue documentation 的动物示例)。

但是,一旦我取消注释 "id 'org.inferred.processors" 和 "processor 'org.inferred:freebuilder:1.14.6'",我就会得到

:processorPath \main\java\example\com\Animal.java:12: error: cannot find symbol return new AutoValue_Animal(name, numberOfLegs); ^ symbol: class AutoValue_Animal location: class Animal 1 error :compileJava FAILED

plugins {
    id 'java'
    id 'idea'
    id 'net.ltgt.apt-idea'  version '0.13'
    // id 'org.inferred.processors' version '1.2.15'
}

version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.auto.value:auto-value:1.5.1'
    apt 'com.google.auto.value:auto-value:1.5.1'

    //processor 'org.inferred:freebuilder:1.14.6'
}

jar {
    from {
        (configurations.runtime).collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    manifest {
        attributes 'Main-Class': 'example.com.Main'
    }
}

idea {
    project {
        // experimental: whether annotation processing will be configured in the IDE; only actually used with the 'idea' task.
        configureAnnotationProcessing = true
    }
    module {
        apt {
            // whether generated sources dirs are added as generated sources root
            addGeneratedSourcesDirs = true
            // whether the apt and testApt dependencies are added as module dependencies
            addAptDependencies = true

            // The following are mostly internal details; you shouldn't ever need to configure them.
            // whether the compileOnly and testCompileOnly dependencies are added as module dependencies
            addCompileOnlyDependencies = false // defaults to true in Gradle < 2.12
            // the dependency scope used for apt and/or compileOnly dependencies (when enabled above)
            mainDependenciesScope = "PROVIDED" // defaults to "COMPILE" in Gradle < 3.4, or when using the Gradle integration in IntelliJ IDEA
        }
    }
}

我正在尝试从这些来源中提取信息:

您可以在项目中同时使用 gradle 依赖项,但不能同时使用它们的 gradle 插件。你也不需要。

您只需要一个 gradle 插件来支持注释处理器(其中任何一个),然后所有 bean 处理器依赖项都应该可以工作。