Как сгенерировать файлы xhtml в веб-приложении, используя процессор аннотаций javac - PullRequest
0 голосов
/ 26 сентября 2018

Я генерирую некоторые исходные файлы во время компиляции, используя процессоры аннотаций, это очень мощная функция.Но я хочу также сгенерировать некоторые компоненты Facelets.Я не знаю, как создать не Java-файлы в папке веб-приложения.Я знаю, что могу сделать это, создав плагин maven, но я хочу сделать это с процессорами аннотаций javac.Является ли это возможным?Любой совет?

Пояснения:

Идея состоит в том, чтобы сгенерировать некоторые файлы xhtml (теги и компоненты facelets) прямо в папке webapp исходников (проект maven) на основена JPA лица.Итак, я создал AnnotationProcessor, он запускается автоматически javac во время компиляции и с помощью API javax.annotation.processing я могу генерировать файлы только в target / generate-sources.

Я нашел обходной путь, создаваяфиктивный файл в target / Генерируемый-источниках и использующий его URI для разрешения src / main / webapp, но если есть более элегантное решение с использованием API, это будет приветствоваться.

1 Ответ

0 голосов
/ 27 сентября 2018

Я нашел уродливое, но работающее решение: создайте фиктивный файл в SOURCE_OUTPUT и получите путь от URI-файла FileObject, затем перейдите к корню проекта.

  FileObject f = processingEnv.getFiler().createResource(StandardLocation.SOURCE_OUTPUT, "", "DUMMY");
  Path p = Paths.get(f.toUri())
          .getParent()  // {PROJECT_ROOT}/target/generated-sources/annotations
          .getParent()  // {PROJECT_ROOT}/target/generated-sources
          .getParent()  // {PROJECT_ROOT}/target
          .getParent(); // {PROJECT_ROOT}
  FileWriter fw = new FileWriter(new File(p.toFile(), "src/main/webapp/generated.xhtml"));
  fw.append("some content...");
  fw.close();

Я оставляю этот ответ до лучшегоодин прибывает:)

...