在 Maven 配置文件中使用 JAXB 和 plexus-compiler-eclipse 插件

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

我正在开发一个项目,我们希望在 Jenkins 管道期间使用 plexus-compiler-eclipse 插件来检查 Eclipse 编译器生成的警告数量是否增加。我们仍然希望在正常构建和测试阶段使用 javac 编译器,因此我正在尝试创建一个 Maven 配置文件,我们可以在使用 Eclipse 编译器的警告阶段 运行。

当我 运行 Eclipse 编译器对我们的代码进行编译时,我收到关于缺少 JAXB 依赖项的编译错误。我知道这是由于我们从 Java 1.8 迁移到 Java 11,但是在使用 javac 编译器构建时我们没有收到此错误。我尝试将 jakarta.xml.bind-api 依赖项添加到 maven-compiler-plugin,但这没有帮助,添加 org.glassfish.jaxb 依赖项或 javax.xml.bind:jaxb-api 依赖项也没有帮助。

我无法分享完整的 pom,因为这个项目是专有的,但我正在构建的配置文件如下所示:

<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>

我将尝试过的各种 JAXB 依赖项放在 org.eclipse.jdt 条目下的 <dependencies> 部分。

还有其他人遇到过这种情况或知道该怎么办吗?

问题源于 Java 11 中的 Maven 构建 运行,但我们的正常编译阶段分叉为 Java 1.8 可执行文件。因为 Plexus 编译器无法分叉到新环境,所以它无法访问 Java EE 依赖项。我们只需要在编译时更新我们的整个项目以与 Java 11 兼容。