jbosstools / m2e-apt

Maven integration with Eclipse JDT Annotation Processor Toolkit
39 stars 19 forks source link

Maven integration with Eclipse JDT Annotation Processor Toolkit.

⚠️ The m2e-apt code has been moved to the Eclipse m2e project. It'll be part of m2e 2.x releases. As a consequence, this repository is now archived.

Build Status

m2e-apt aims at providing automatic Annotation Processing configuration in Eclipse based on your project's pom.xml and its classpath dependencies. m2e-apt requires Java >= 1.8 to run, but will work on Java 6 projects.

Due to some rogue annotation processors at large, we decided to disable automatic annotation processing by default. By default, your manual settings for Eclipse JDT APT apply.

Go to Window > Preferences > Maven > Annotation Processing or right-click on your project Properties > Maven > Annotation Processing to select the Annotation Processing strategy of your choice.

m2e-apt supports both Annotation Processing set on the maven-compiler-plugin or the maven-processor-plugin (the latter takes precedence over the former).

When Annotation Processing is managed by Eclipse JDT APT, any change in your source classes triggers incremental processing automatically, however subtle differences in Annotation classpath might lead to unexpected results. Moreover, main and test sources separation only works in Eclipse Photon or more recent versions. You can change the workspace or project preferences to delegate annotation processing to maven, instead of JDT APT. This will result in slower incremental builds (all classes will be processed) but will provide identical results to maven command line builds. Note this only works when using maven-processor-plugin. When annotation processing is driven by maven-compiler-plugin, JDT APT is always used in eclipse.

See this blog post for more informations.

Default m2e-apt activation mode (from workspace preferences) can be overridden by an <m2e.apt.activation> Maven property in a project's pom.xml settings section. Valid values are :

The toolkit uses Eclipse JDK, that's why additional configuration may needed to be done for legacy projects which depend on outdated JDK. For example in Eclipse 2020-09 (which runs on JDK11+ only), in case a project needing m2e-apt is using JDK8, additional annotation processing paths must be added to the project's pom.xml for successful compilation (to the plugin's annotationProcessorPaths section):

<path>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.3</version>
</path>
<path>
    <groupId>javax.annotation</groupId>
    <artifactId>jsr250-api</artifactId>
    <version>1.0</version>
</path>

m2e-apt can be installed from :

m2e-apt requires m2e 1.5+