Java 6: как передать несколько параметров в APT - PullRequest
2 голосов
/ 13 сентября 2010

У меня есть процессор аннотаций Java, который расширяется от AbstractProcessor .

У меня есть две поддерживаемые опции, addResDir и verbose, и я пытаюсь установить их так:

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

<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 отправляет аргумент Javac в виде одной строки в массиве args, хотя, конечно, это должны быть две строки.Версия карты <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.

(см. Отображение карт из Руководства по настройке подключаемых модулей Maven )

И яБоюсь, что это невозможно изменить, аааа.


РЕДАКТИРОВАТЬ:

Я подал отчет об ошибке .

1 Ответ

0 голосов
/ 16 сентября 2010

Реального ответа пока нет.

Ошибка подана: MCOMPILER-135

и я представил три разных патча, , последний из которых представляет переменную типа Свойства :

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

Это решение является наиболее гибким, поскольку оно поддерживает множество различных форматов синтаксиса параметров.

(Если бы существующий параметр <compilerArguments> также имел тип Свойства, моя проблема была бы решена)

...