java - 从 Maven 插件扫描自定义注释类

标签 java maven plugins annotations

我有一个“简单的 Maven 项目”,其中包含一个带有一些自定义注释类的包。 我目前正在开发一个 Maven 插件,它可以扫描我的“简单项目”以查找那些带注释的类,然后返回它们的名称和关联的包。

例如: simple-project/src/main/java/myApp/domain/Entity.java ,其中实体用 @MyCustomAnnotation 注释 并且“my-maven-plugin”项目在“simple-project”pom.xml中声明

因此,如果我运行“mvn生成器:myGoal”,它应该生成一个包含以下内容的文件:myApp.domain.Entity

我几乎尝试了在互联网上找到的所有内容,但没有任何效果。 每次我运行我的目标时,我的插件都会扫描它自己的类,但不会扫描我的简单项目类。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

我找到了解决方案。 我使用递归函数循环 sourceDirectory 来查找所有文件。 以下是我从 mojo 获取 sourceDirectory 的方法:

/**
     * Project's source directory as specified in the POM.
     * 
     * @parameter expression="${project.build.sourceDirectory}"
     * @readonly
     * @required
     */
    private final File sourceDirectory = new File("");
    fillListWithAllFilesRecursiveTask(sourceDirectory);

我获取这些文件的路径,然后使用 com.google.code.javaparser 来解析关联的 FileInputStream。

public void fillListWithAllFilesRecursiveTask(final File root) {
                    CompilationUnit cu;
                    FileInputStream in;
                    try {
                        // we looped through root and we found a file (not a directory)
                        in = new FileInputStream(file);
                        cu = JavaParser.parse(in);
                        new MethodVisitor().visit(cu, file);

最后,我扩展了 VoidVisitorAdapter 以获取注释和成员...等

private static class MethodVisitor extends VoidVisitorAdapter<File> {

        @Override
        public void visit(ClassOrInterfaceDeclaration n, File file) {
            if (n.getAnnotations() != null) {
                // store classes that are annotated
                for (AnnotationExpr annotation : n.getAnnotations()) {
                    //here some logic
                    }
                } ...

关于java - 从 Maven 插件扫描自定义注释类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634850/

相关文章:

scala - 在 Maven 项目中启用宏天堂 Scala 编译器插件

java - 如何将包添加到netbeans中的其他测试源中

plugins - 如何开发第三方SAS PROC?

javascript - FlowType.JS 不工作

internet-explorer - 强制 Internet Explorer 使用特定的 Java 运行时环境安装?

java - java中连接linkedList

java - 使用 Spring 框架以原子方式维护服务层事务和数据库日志记录

Java 替换 URL 中斜杠之间或之后的任何数字

java - Java 1.5 下 HTTP 连接超时

java - frontend-maven-plugin 执行两次