在 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 依赖项放在 <dependencies>
部分的 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 + plexus + eclipse 编译器中可能存在错误?
安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher