Путаница/конфликт плагина Gradle с AutoValue и FreeBuilder

Я экспериментирую с Gradle/IntelliJ и различными компоновщиками/контейнерами Java. Однако я не могу настроить org.inferred.FreeBuilder и com.google.auto.value.AutoValue в одном проекте.

С помощью приведенного ниже файла build.gradle я могу успешно скомпилировать класс, дополненный AutoValue (пример с животными из AutoValue документацию).

Однако, как только я раскомментирую "id 'org.inferred.processors" и "processor 'org.inferred:freebuilder:1.14.6'", я получаю

:processorPath \main\java\example\com\Animal.java:12: ошибка: не удается найти символ return new AutoValue_Animal(name, numberOfLegs); ^ символ: класс AutoValue_Animal местоположение: класс Animal 1 ошибка: 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
        }
    }
}

Я пытаюсь извлечь информацию из этих источников:


person Leon    schedule 04.01.2018    source источник
comment
Я сделал что-то похожее на вас здесь: github.com/tkruse/beantest. может помочь вам начать. Я использую разные плагины Gradle.   -  person tkruse    schedule 05.01.2018


Ответы (1)


Вы можете использовать обе зависимости Gradle в своем проекте, но не оба их плагина Gradle. Вам и не нужно.

Вам просто нужен один плагин Gradle для поддержки процессора аннотаций (любой из них), и тогда все зависимости bean-процессора должны работать.

person tkruse    schedule 05.01.2018
comment
+1 изд. Похоже, мы столкнулись с похожими проблемами. Спасибо за репозиторий git, круто. У меня есть одна вещь, которую я до сих пор не могу понять. Мои сгенерированные мухи попадают в папку build/classes. Я попытался включить обработку процессора, но это не помогло. Какие-либо предложения? - person Leon; 08.01.2018
comment
играя с beantest, кажется, что сгенерированные классы переходят к target/generated-sources для maven.compile, но не для gradle.compileJava - person Leon; 08.01.2018
comment
рад попытаться внести свой вклад. Я считаю, что возможности обнаружения конфигураций Gradle очень плохие. Любые указатели, где найти параметры, которые мне нужно настроить? - person Leon; 09.01.2018
comment
Спасибо. кажется, что это сделает свое дело. stackoverflow.com/a/37822882/541765 - person Leon; 09.01.2018