[ 
https://jira.codehaus.org/browse/MCOMPILER-97?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=272577#comment-272577
 ] 

Jesse Glick commented on MCOMPILER-97:
--------------------------------------

Regarding {{-source 1.5}}: it is unsafe to pass {{-processorpath}} in this 
case, since the target javac might in fact be from JDK 5 and not recognize this 
option. (If the compiler plugin went through JSR 199, with javac on the plugin 
classpath, this would not be an issue.)

Regarding a change in javac's behavior: I would not hold my breath. After all, 
you passed {{-classpath target/classes:...}} so that is where it is looking. It 
is really the responsibility of the invoker to make sure the processor path is 
correct.

> META-INF/services/javax.annotation.processing.Processor copied before 
> compilation and causes error
> --------------------------------------------------------------------------------------------------
>
>                 Key: MCOMPILER-97
>                 URL: https://jira.codehaus.org/browse/MCOMPILER-97
>             Project: Maven 2.x Compiler Plugin
>          Issue Type: Bug
>    Affects Versions: 2.0.2
>         Environment: Ubuntu 8.10, JDK 6.
>            Reporter: Jesse Glick
>         Attachments: maven-6647998-test.zip
>
>
> It is tricky to compile a Maven module which defines a (269-compliant) 
> annotation processor. If you write the code for the processor in 
> src/main/java and register it in src/main/resources, 
> META-INF/services/javax.annotation.processing.Processor is copied to 
> target/classes first, and then javac is run. But javac is given 
> target/classes in -classpath, so it tries to load the processor, which of 
> course has not been compiled yet - a chicken-and-egg problem.
> The most straightforward workaround is to specify 
> <compilerArgument>-proc:none</compilerArgument> in your POM. This will only 
> work, however, if the module does not use any annotation processors defined 
> in dependencies. If it does, there may be some other trick involving 
> -processorpath and Maven variable substitution to insert the dependency 
> classpath.
> Switching the order of resources:resources and compiler:compile would help - 
> at least a clean build would work - though it could still cause problems in 
> incremental builds. Better would be for the compiler plugin to pass 
> -processorpath based on the dependency classpath (i.e. -classpath minus 
> target/classes) when using -source 1.6 or higher.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to