首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用javac批注处理器在webapp中生成xhtml文件

如何使用javac批注处理器在webapp中生成xhtml文件
EN

Stack Overflow用户
提问于 2018-09-27 04:32:35
回答 1查看 66关注 0票数 0

我正在使用注释处理器在编译时生成一些源文件,这是一个非常强大的功能。但我也想生成一些facelets组件。我不知道如何在webapp文件夹中创建非java文件。我知道创建一个maven插件可以做到这一点,但我想用javac注释处理器来实现。有可能吗?有什么建议吗?

Clarifications:

这个想法是基于JPA实体在源代码(maven项目)的webapp文件夹下生成一些xhtml文件(facelets、标签和组件)。所以我已经创建了一个AnnotationProcessor,它是由javac在编译时自动触发的,并且使用javax.annotation.processing应用程序接口,我只能在目标/生成的源码下生成文件。

我已经找到了一个解决方法,在target/generated-sources下创建一个虚拟文件,并使用它的URI来解析src/main/webapp,但是如果有任何使用API的更优雅的解决方案,它将是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2018-09-27 06:33:41

我找到了一个难看但有效的解决方案:在SOURCE_OUTPUT中创建一个虚拟文件,并从FileObject URI获取路径,然后导航到项目根目录。

代码语言:javascript
复制
  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();

我把这个答案留到更好的答案出现之前:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52525655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档