@AutoService(ServiceInterface.class)
public interface ServiceInterface {
...
}
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes("com.google.auto.service.AutoService")
public class AutoServiceProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (Element element : roundEnv.getElementsAnnotatedWith(AutoService.class)) {
// ...
}
return true;
}
}
private void generateRegistrationCode(TypeElement interfaceElement) {
StringBuilder codeBuilder = new StringBuilder();
codeBuilder.append("package ").append(packageName).append(";
");
codeBuilder.append("public class ").append(className).append(" implements ").append(interfaceElement.getSimpleName()).append(" {
");
codeBuilder.append("...
");
codeBuilder.append("}
");
}
groovy
plugins {
id 'java'
}
dependencies {
implementation 'com.google.auto.service:auto-service:1.0-rc7'
}
sourceSets {
main {
java {
srcDir 'src/main/java'
srcDir 'build/generated/source/annotations'
}
}
}
tasks.withType(JavaCompile) {
options.annotationProcessorPath = configurations.compile
}