2010-09-13 21 views
2

J'ai un processeur d'annotation Java qui s'étend de AbstractProcessor.Java 6: comment transmettre plusieurs paramètres à APT

J'ai deux options prises en charge, addResDir et verbose, et je suis en train de les mettre comme ceci:

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

J'ai aussi essayé:

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

alors qu'un seul des œuvres de paramètres, par exemple

-AaddResDir=src/main/webapp 

Je ne peux pas les multiples paramètres à travailler et je ne trouve pas de documents pertinents. Ai-je besoin d'analyser les paramètres manuellement dans APT?

La seule chose que j'ai est la sortie de javac -help:

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

EDIT

Il se révèle être un problème de Maven, après tout. Voici ma config 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> 

Malheureusement, maven envoie l'argument Javac comme une seule chaîne dans le tableau args, alors qu'il doit bien sûr être deux cordes. La carte Version <compilerAguments> est d'aucune aide non plus, parce que

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

génère la sortie:

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

Alors que javac requiert la syntaxe

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

et

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

est invalidés d XML.

(Voir Mapping Maps du Guide to Configuring Maven Plugins)

Et je crains qu'il n'y ait aucun moyen de changer cela, argh.


EDIT:

J'ai maintenant filed a bug report.

+0

En fait, je pense que vos doublons d'émission [MCOMPILER-130] (http://jira.codehaus.org/browse/ MCOMPILER-130) qui a été soulevée après http://stackoverflow.com/questions/3358242/is-it-possible-to-get-maven-to-accept-maxerrs-for-its-compiler-plugin. Mais la syntaxe de la carte ne vous sauvera pas ici. –

+0

Non, je ne dirais pas que c'est un dupe car les paramètres d'annotation ont une syntaxe différente et il n'y a pas de solution pour cela. –

+0

Je pense que vous avez raison, le problème est différent. –

Répondre

0

Il n'y a pas de vraie réponse pour le moment.

Le bug est déposé: MCOMPILER-135

et j'ai présenté trois patches différents, the last of which introduit une variable de type Properties:

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

Cette solution est la plus souple, car il prend en charge de nombreux paramètres différents formats de syntaxe.

(Si le paramètre existant <compilerArguments> étaient également de type Propriétés mon problème serait résolu)