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
}
}
}
我正在尝试从这些来源中提取信息:
- https://github.com/google/auto/issues/106#issuecomment-299005192
- https://github.com/google/auto/blob/master/value/userguide/index.md#in-your-value-class
- Cannot resolve symbol with AutoValue and IntelliJ
- https://github.com/tbroyer/gradle-apt-plugin
您可以在项目中同时使用 gradle 依赖项,但不能同时使用它们的 gradle 插件。你也不需要。
您只需要一个 gradle 插件来支持注释处理器(其中任何一个),然后所有 bean 处理器依赖项都应该可以工作。
我正在试验 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
}
}
}
我正在尝试从这些来源中提取信息:
- https://github.com/google/auto/issues/106#issuecomment-299005192
- https://github.com/google/auto/blob/master/value/userguide/index.md#in-your-value-class
- Cannot resolve symbol with AutoValue and IntelliJ
- https://github.com/tbroyer/gradle-apt-plugin
您可以在项目中同时使用 gradle 依赖项,但不能同时使用它们的 gradle 插件。你也不需要。
您只需要一个 gradle 插件来支持注释处理器(其中任何一个),然后所有 bean 处理器依赖项都应该可以工作。