<#import "_setup.html" as s> <@s.scaffold title="ECJ"> <@s.introduction>

ECJ (the Eclipse standalone compiler) is compatible with Lombok. Use the following command line to enable Lombok with ECJ:

java -javaagent:lombok.jar=ECJ -jar ecj.jar -cp lombok.jar -source 1.8 (rest of arguments)

You may have to add the following VM argument, if you're using an older version of Lombok or Java:

-Xbootclasspath/p:lombok.jar

If you're using a tool based on ECJ, adding these VM arguments and adding lombok.jar to the classpath should work.

<@s.section title="Maven">

Lombok comes with a tiny bootstrap agent that can be included in your project to allow ECJ to easily work with Maven. To create this agent, run:

java -jar lombok.jar createMavenECJBootstrap -o /path/to/project/root

The -o path should contain your pom.xml.

This will create two files, .mvn/jvm.config and .mvn/lombok-bootstrap.jar. Maven will use these files to activate the standard Lombok Java agent at the right time. These can be committed in source control for a portable build.

You must also update your pom.xml to add Lombok as a dependency to the maven-compiler-plugin. A minimal example follows:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.projectlombok</groupId>
  <artifactId>eclipse-compiler-test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <lombok.version>${version}</lombok.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
          <configuration>
            <compilerId>eclipse</compilerId>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.codehaus.plexus</groupId>
              <artifactId>plexus-compiler-eclipse</artifactId>
              <version>2.11.1</version>
            </dependency>
            <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>${lombok.version}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>