<dependencies>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>1.7</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/annotations</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
groovy
dependencies {
compileOnly 'com.google.auto.value:auto-value:1.7'
}
sourceSets {
main {
java {
srcDirs 'build/generated/source/apt/main'
}
}
}
compileJava {
options.annotationProcessorPath = configurations.compileOnly
}
@AutoValue
@AutoValue.CopyAnnotations
public abstract class MyClass {
public static MyClass create(String name, int age) {
return new AutoValue_MyClass(name, age);
}
public abstract String name();
public abstract int age();
}
@AutoValue
@AutoValue.CopyAnnotations
public abstract class MyClass {
public static MyClass create(String name, int age) {
return new AutoValue_MyClass(name, age);
}
public abstract String name();
public abstract int age();
public String getInfo() {
return name() + " is " + age() + " years old.";
}
}
@AutoValue
@AutoValue.CopyAnnotations
public abstract class MyClass implements Serializable {
public static MyClass create(String name, int age) {
return new AutoValue_MyClass(name, age);
}
public abstract String name();
public abstract int age();
private Object readResolve() throws ObjectStreamException {
return MyClass.create(name(), age());
}
}
@AutoValue
@AutoValue.CopyAnnotations
public abstract class MyClass {
public static Builder builder() {
return new AutoValue_MyClass.Builder();
}
public abstract String name();
public abstract int age();
public static abstract class Builder {
public abstract Builder name(String name);
public abstract Builder age(int age);
public abstract MyClass build();
}
}