Напишите файл Java с использованием JavaPoet в процессоре аннотаций
Я пытаюсь использовать processingEnv.getFiler() для создания исходного файла. Но я не вижу создания исходного файла. Ниже приведен код, который я использую:
public void javaPoetEg() {
Filer filer = super.processingEnv.getFiler();
MethodSpec main = MethodSpec.methodBuilder("testFiler")
.addModifiers(Modifier.PUBLIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
.build();
TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(main)
.build();
JavaFile javaFile = JavaFile.builder("com.ankit.annotation", helloWorld)
.build();
try{
javaFile.writeTo(filer);
} catch (IOException e) {
e.printStackTrace();
}
}
И затем вызывая функцию javaPoetEg в переопределенной функции process() процессора аннотаций. Что я здесь не так делаю?
1 ответ
Эта часть: javaFile.writeTo
пишет в File
, или PrintStream
. Итак, вы можете сделать что-то вроде этого:
File file = new File("/target/directory");
javaFile.writeTo(file); // this will make a new File with all the data you added
Или:
javaFile.writeTo(System.out) // this will print the file representation in the console
Надеюсь это поможет. Ура.
Я предлагаю вам взглянуть на то, как Filer
должен работать. Javadoc
Расположение исходных файлов может зависеть от параметров, которые вы указываете в командной строке, или вы должны проверить значения по умолчанию generated
каталог.