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

发布于 2024-09-19 03:19:09 字数 2200 浏览 9 评论 0 原文

我有一个从 AbstractProcessor 扩展的 Java 注释处理器

我有两个支持的选项,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

EDIT

毕竟,事实证明这是一个 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,而它当然应该是两个字符串。映射版本 也没有帮助,因为

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

生成输出:

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

While javac 需要语法

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

并且

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

是无效的 XML。

(请参阅 配置Maven插件指南

而且恐怕没有办法改变这个,呃。


编辑:

我现在已经提交了错误报告

I have a Java Annotation Processor that extends from AbstractProcessor.

I have two supported options, addResDir and verbose, and I am trying to set them like this:

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

I have also tried this:

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

While a single parameter works, e.g.

-AaddResDir=src/main/webapp

I can't get the multiple parameters to work and I can't find any relevant docs. Do I need to parse the parameters manually in APT?

The only thing I have is the output of javac -help:

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

EDIT

It turns out to be a maven problem, after all. Here is my maven config:

<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>

Unfortunately, maven sends the argument to Javac as a single string in the args array, while it should of course be two Strings. The Map Version <compilerAguments> is no help either, because

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

generates the output:

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

While javac requires the syntax

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

and

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

is invalid XML.

(See Mapping Maps from the Guide to Configuring Maven Plugins)

And I am afraid there is no way to change this, argh.


EDIT:

I have now filed a bug report.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随心而道 2024-09-26 03:19:09

目前还没有真正的答案。

该错误已提交:MCOMPILER-135

,我已经提交了三个不同的补丁,最后一个引入了 属性

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

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

(如果现有参数 也是 Properties 类型,我的问题就可以解决)

There is no real answer as of yet.

The bug is filed: MCOMPILER-135

and I have submitted three different patches, the last of which introduces a variable of type Properties:

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

This solution is the most flexible one because it supports many different parameter syntax formats.

(If the existing parameter <compilerArguments> were also of type Properties my problem would be solved)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文