Skip to content
Advertisement

Use JAXB with plexus-compiler-eclipse plugin in maven profile

I am working on a project where we want to use the plexus-compiler-eclipse plugin during a Jenkins pipeline to check for increases in the number of warnings generated by the Eclipse compiler. We still want to use the javac compiler for the normal build and test stage, so I am trying to create a maven profile we can run during the warnings stage that utilizes the Eclipse compiler.

When I run the Eclipse compiler over our code, I get a compile error about JAXB dependencies being missing. I know this is due to our move to Java 11 from Java 1.8, but we do not get this error when building with the javac compiler. I have tried adding the jakarta.xml.bind-api dependency to the maven-compiler-plugin, but this does not help, nor does adding the org.glassfish.jaxb dependency or the javax.xml.bind:jaxb-api dependency.

I cannot share the full pom because this project is proprietary, but the profile I’m building looks like this:

<profile>
    <id>eclipse-compile</id>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1></version>
                    <configuration>
                        <compilerId>eclipse</compilerId>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <compilerArguments>
                            <properties>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</properties>
                        </compilerArguments>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.plexus</groupId>
                            <artifactId>plexus-compiler-eclipse</artifactId>
                            <version>2.8.8</version>
                        </dependency>
                        <dependency>
                            <groupId>org.eclipse.jdt</groupId>
                            <artifactId>ecj</artifactId>
                            <version>3.25.0</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</profile>

I was putting the various JAXB dependencies I tried in the <dependencies> section under the org.eclipse.jdt entry.

Anyone else encounter this or know what to do about it?

Advertisement

Answer

The issue stemmed from the Maven build running in Java 11 but our normal compile stage forking to a Java 1.8 executable. Because the Plexus compiler cannot fork to a new environment, there was not a way for it to access the Java EE dependencies. We just need to update our entire project to be compatible with Java 11 at compile-time.

Advertisement