在 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 兼容。
我正在开发一个项目,我们希望在 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 兼容。