maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Buergler (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MCOMPILER-97) META-INF/services/javax.annotation.processing.Processor copied before compilation and causes error
Date Sat, 24 Nov 2018 08:32:00 GMT

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

Stephen Buergler commented on MCOMPILER-97:
-------------------------------------------

If anyone else has this issue. If you use an annotation processor to create the META-INF/services/javax.annotation.processing.Processor
file then I've noticed that everything kind of just works. The file isn't there when the main
sources are being compiled and it is there when the test sources are being compiled. I've
been using the project from here: https://github.com/kohsuke/metainf-services

> 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 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
(v7.6.3#76005)

Mime
View raw message