小编Dav*_*lme的帖子

如何让java注释处理器从projectA读取并处理注释并为projectB生成java源文件

我创建了一个 java 注释,将我的一些“服务”类标记为服务,然后编写了一个注释处理器来生成相应的 servicerequest 和 servicehandler 类。这是一个 GWT maven 项目,其中服务请求被发送到服务器到中央调度程序,由各种服务处理。

我的maven项目由一个父项目和5个子模块项目组成。

项目结构是这样的:

  • MoodleMobile (父级 Maven 项目)
    • gwtMoodleWS (GWT层)
    • moodleBuildSupport (包含注释处理器)
    • moodleGenerateServiceHandlers (生成类的所需位置)
    • MoodleWS (服务器端层)
    • MoodleWSAPI (注释处理器将运行的代码位置)

我的问题是这样的。

让注释处理器从一个项目(moodleWSAPI)读取和处理注释并在另一个项目(moodleGenerateServiceHandlers)中生成java源文件的规定方法是什么?

我似乎有很多注释处理器的例子为运行注释处理器的同一项目生成java源文件,但不为不同的项目生成java源文件。

我已经成功构建并测试了我的注释处理器,但我不知道如何让它在处理器运行的项目之外生成文件。目前它在moodleWSAPI中生成java源文件(这是错误的) 。我希望它处理moodleWSAPI中的源文件,然后在moodleGenerateServiceHandlers中输出新生成的源文件。

这是我必须创建实际的 java 源文件的代码片段..

    public void createSourceFileFromTemplate(Template template, ClassSignature classSignature, VelocityContext context, Element element) {
        PrintWriter pw = null;
        try {
            JavaFileObject sourceFile =  processingEnv.getFiler().createSourceFile(classSignature.getFullName(), classSignature.getElement());
            OutputStream fileStream = sourceFile.openOutputStream();
            pw = new PrintWriter(fileStream);
            template.merge(context, pw);
        } catch (Exception e) {
            e.printStackTrace();
            if (element!=null) {
               processingEnv.getMessager().printMessage(Kind.ERROR, e.getMessage(),element);
            } else { …
Run Code Online (Sandbox Code Playgroud)

java annotations annotation-processing

4
推荐指数
1
解决办法
1635
查看次数

标签 统计

annotation-processing ×1

annotations ×1

java ×1