Uploaded image for project: 'Maven Compiler Plugin'
  1. Maven Compiler Plugin
  2. MCOMPILER-97

META-INF/services/javax.annotation.processing.Processor copied before compilation and causes error

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Reopened
    • Major
    • Resolution: Unresolved
    • 2.0.2
    • None
    • None
    • Ubuntu 8.10, JDK 6.

    Description

      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.

      Attachments

        1. maven-6647998-test.zip
          8 kB
          Jesse N. Glick
        2. MCOMPILER-97-workaround.zip
          6 kB
          Jesse N. Glick

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jglick Jesse N. Glick
              Votes:
              13 Vote for this issue
              Watchers:
              23 Start watching this issue

              Dates

                Created:
                Updated: