【问题标题】:Pass argument to annotation processor将参数传递给注释处理器
【发布时间】:2017-08-16 22:16:11
【问题描述】:

我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我喜欢这样

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <generatedSourcesDirectory>${project.build.directory}/generated-sources/</generatedSourcesDirectory>
                    <annotationProcessors>
                        <annotationProcessor>org.rapster.xxx.xxx.xxComponentProcessor</annotationProcessor>
                    </annotationProcessors>
                    <compilerArgs>
                       <arg>-Awidget=something</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

以及如何在处理器端检索此参数?

【问题讨论】:

    标签: java maven annotations


    【解决方案1】:

    你可以得到这个参数如下 -

    processingEnvironment.getOptions().get("widget")
    

    请注意,只有以“-A”开头的参数才能通过这种方式使用。

    【讨论】:

      【解决方案2】:

      AbstractProcessor 的实现中,您可以使用以下方法检索参数:

      processingEnv.getOptions().get("widget");
      

      请注意,您需要声明处理器支持的选项,方法是使用注释@SupportedOptions({"widget"}) 或覆盖方法public Set&lt;String&gt; getSupportedOptions()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        相关资源
        最近更新 更多