Java 6:如何将多个参数传递给APT

时间:2010-09-13 12:29:45

标签: java maven-2 annotations javac apt

我有一个从AbstractProcessor扩展的Java Annotation Processor。

我有两个支持的选项addResDirverbose,我试图将它们设置为:

-AaddResDir=src/main/webapp -Averbose=true

我也试过这个:

-AaddResDir=src/main/webapp,verbose=true

虽然单个参数有效,例如

-AaddResDir=src/main/webapp

我无法使多个参数起作用,我找不到任何相关的文档。我是否需要在APT中手动解析参数?

我唯一拥有的是javac -help的输出:

-Akey[=value]   Options to pass to annotation processors

修改

毕竟,事实证明这是一个maven问题。这是我的maven配置:

<plugin>
    <inherited>true</inherited>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <optimize>true</optimize>
        <debug>true</debug>
        <compilerArgument>-AaddResDir=src/main/webapp -Averbose=true</compilerArgument>
    </configuration>
</plugin>

不幸的是,maven将参数作为args数组中的单个字符串发送给Javac,而它当然应该是两个字符串。地图版<compilerAguments>也没有帮助,因为

<Averbose>true</Averbose>
<AaddResDir>src/main/webapp</AResDir>

生成输出:

[... , -Averbose, true, -AaddResDir, src/main/webapp]

虽然javac需要语法

[... , -Averbose=true, -AaddResDir=src/main/webapp ]

<Averbose=true />
<AaddResDir=src/main/webapp />

是无效的XML。

(请参阅Mapping Maps){/ 3>中的Guide to Configuring Maven Plugins

我担心没有办法改变这一点,唉。


修改

我现在filed a bug report

1 个答案:

答案 0 :(得分:0)

目前还没有真正的答案。

该错误已归档:MCOMPILER-135

我已经提交了三个不同的补丁,the last of which引入了Properties类型的变量:

<additionalCompilerArguments>
    <property> <name>-Akey=value</name> </property>
    <property> <name>-verbose</name> </property>
    <property> <name>-Xmaxerrs</name> <value>1000</value> </property>
</additionalCompilerArguments>

此解决方案是最灵活的解决方案,因为它支持许多不同的参数语法格式。

(如果现有参数<compilerArguments>也属于属性,我的问题将得到解决)