在 Maven 配置文件中使用带有 plexus-compiler-eclipse 插件的 JAXB

Posted

技术标签:

【中文标题】在 Maven 配置文件中使用带有 plexus-compiler-eclipse 插件的 JAXB【英文标题】:Use JAXB with plexus-compiler-eclipse plugin in maven profile 【发布时间】:2022-01-11 20:00:33 【问题描述】:

我正在开发一个项目,我们希望在 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 依赖项放在 &lt;dependencies&gt; 部分的 org.eclipse.jdt 条目下。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于在 Maven 配置文件中使用带有 plexus-compiler-eclipse 插件的 JAXB的主要内容,如果未能解决你的问题,请参考以下文章

安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher

Maven中,pom.xml文件报错

区分大小写的包上的 Maven + plexus + eclipse 编译器中可能存在错误?

jboss plexus错误中的maven索引搜索

安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher

如何阻止我的命令行参数在 Maven 插件中被转义?