Arend
Arend

Reputation: 2423

Maven error: Failed to run the ecj compiler: Unrecognized option : --patch-module

I'm using Maven in Eclipse for a modular Java project, and have managed to make Maven use the Eclipse compiler following the answer to this question.

However, the Maven test-compile target fails with the error message

Failed to run the ecj compiler: Unrecognized option : --patch-module

which is quite surprising (actually unbelievable) because Eclipse is well up to patching modules.

Here's the pom.xml for a MVE, consisting of a modular project patchmodule:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>patchmodule</groupId>
    <artifactId>patchmodule</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <compilerId>eclipse</compilerId>
                    <release>16</release>
                    <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.12.1</version>
                    </dependency>

                    <dependency>
                        <groupId>org.eclipse.jdt</groupId>
                        <artifactId>ecj</artifactId>
                        <version>3.31.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>

The error kicks in as soon as you give the project a single test, such as

package patchmodule.test;

import static org.junit.jupiter.api.Assertions.*;

class Test {
    @org.junit.jupiter.api.Test
    void test() {
        fail("Not yet implemented");
    }
}

and then do a Maven install, or any target that will invoke testCompile.

Is this a bug (and if so, whose)? More importantly, is there a way to work around it? Any help is much appreciated.

Upvotes: 0

Views: 240

Answers (0)

Related Questions