[
https://issues.apache.org/jira/browse/MCOMPILER-97?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17735455#comment-17735455
]
Basil Crow commented on MCOMPILER-97:
-------------------------------------
[~agudian] I disagree with the assessment of this ticket as "Not a Problem".
True, one could list the annotation processors or processor path explicitly,
but this results in a POM that is hard to develop and maintain (in the sense
that one would have to construct this enumeration and keep it up-to-date) in
contrast with a POM that does not list them explicitly and instead relies on
the default discovery behavior. [~jglick]'s original suggestion resolves this
problem nicely:
bq. Better would be for the compiler plugin to pass {{-processorpath}} based on
the dependency classpath (i.e. {{-classpath}} minus {{target/classes}})
In my opinion this ticket should be reopened.
> META-INF/services/javax.annotation.processing.Processor copied before
> compilation and causes error
> --------------------------------------------------------------------------------------------------
>
> Key: MCOMPILER-97
> URL: https://issues.apache.org/jira/browse/MCOMPILER-97
> Project: Maven Compiler Plugin
> Issue Type: Bug
> Affects Versions: 2.0.2
> Environment: Ubuntu 8.10, JDK 6.
> Reporter: Jesse N. Glick
> Priority: Major
> Attachments: MCOMPILER-97-workaround.zip, 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 was sent by Atlassian Jira
(v8.20.10#820010)