Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Maven 2中使用自定义注释处理器?_Java_Maven 2_Annotations_Maven Plugin_Annotation Processing - Fatal编程技术网

Java 如何在Maven 2中使用自定义注释处理器?

Java 如何在Maven 2中使用自定义注释处理器?,java,maven-2,annotations,maven-plugin,annotation-processing,Java,Maven 2,Annotations,Maven Plugin,Annotation Processing,在我们的企业应用程序中,我们正在寻找一种从Java类收集数据的动态方法。我们创建了一个带有名称属性的自定义注释接口(@interface)。我们希望从所有带注释的类中收集此属性的值 我为自定义注释创建了一个AnnotationProcessorFactory和一个AnnotationProcessor。因为我们使用的是Maven 2,所以我在主项目的pom.xml插件中添加了以下内容 <plugin> <groupId>org.codehaus.moj

在我们的企业应用程序中,我们正在寻找一种从Java类收集数据的动态方法。我们创建了一个带有
名称
属性的自定义注释接口(
@interface
)。我们希望从所有带注释的类中收集此属性的值

我为自定义注释创建了一个
AnnotationProcessorFactory
和一个
AnnotationProcessor
。因为我们使用的是Maven 2,所以我在主项目的
pom.xml
插件中添加了以下内容

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>apt-maven-plugin</artifactId>
      <version>1.0-alpha-5</version>
      <configuration>
        <factory>our.company.api.component.lister.ComponentAnnotationProcessFactory</factory>
      </configuration>
    </plugin>
该插件位于
main\u项目的
pom.xml
中。假设工厂和处理器位于
sub\u project1
中,自定义注释位于
sub\u project2
sub\u project3
,…,
sub\u projectn
,需要检查两件事:

  • 确保包含
    组件AnnotationProcessFactory
    主\u项目(或插件)
  • Apt Maven插件的
    配置标签对我不起作用,但如果其完全限定名位于
    META-INF/services/com.sun.mirror.Apt.AnnotationProcessorFactory
    文件中,则插件会找到工厂类。(见附件。)
  • 更好的方法是使用(而不是Maven Apt插件),因为它不需要JDK的
    lib
    文件夹中的
    com.sun
    包和
    tools.jar

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
    
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
    
                    <annotationProcessors>
                        <annotationProcessor>
                            com.example.annotationprocessor.Processor
                        </annotationProcessor>
                    </annotationProcessors>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    
    在Java专家通讯中
    

  • 您的项目层次结构是什么样的?
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
    
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
    
                    <annotationProcessors>
                        <annotationProcessor>
                            com.example.annotationprocessor.Processor
                        </annotationProcessor>
                    </annotationProcessors>
                </configuration>
            </plugin>
        </plugins>
    </build>