2010-09-13 9 views
2

У меня есть обработчик Java-аннотации, который простирается от AbstractProcessor.Java 6: как передать несколько параметров APT

Я два поддерживаемых вариантов, 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, в конце концов. Вот мой 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> 

К сожалению, специалист отправляет аргумент 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 /> 

является invali d XML.

(см Mapping Maps от Guide to Configuring Maven Plugins)

И я боюсь, что нет никакого способа изменить это, Argh.


EDIT:

я сейчас filed a bug report.

+0

На самом деле, я думаю, что ваша проблема дублируют [MCOMPILER-130] (http://jira.codehaus.org/browse/ MCOMPILER-130), который был поднят после http://stackoverflow.com/questions/3358242/is-it-possible-to-get-maven-to-accept-maxerrs-for-its-compiler-plugin. Но синтаксис карты не спасет вас здесь. –

+0

Нет, я бы не сказал, что это обман, поскольку параметры аннотации имеют другой синтаксис, и для этого нет обходного пути. –

+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> были также свойства типа моя проблема будет решена)

Смежные вопросы