java 根据jdk版本排除maven依赖项

wydwbb8l  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(354)

我有一个maven项目,它需要支持使用Jdk 8和Jdk 11构建。当它使用Jdk 8构建时,我看到它还打包了jakarta.xml.bind:jakarta.xml.bind-api jar。(当部署在运行于Jdk 8上的JEE服务器上时,这会导致一些错误)
依赖项旨在提供一些自版本9以来从Jdk中排除但在Jdk 8中存在的包。那么如何仅在使用Jdk 8构建时排除它,否则它应该仍然存在?
我从几个库中传递地获得依赖关系:

[INFO]    \- org.apache.cxf:cxf-core:jar:3.5.3:compile (version managed from 3.5.3)
[INFO]       +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.5:compile
[INFO]       |  \- (jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:compile - version managed from 2.3.3; omitted for duplicate)
[INFO]       \- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:compile (version managed from 2.3.3)

我读到关于使用maven编译器插件与配置像bellow,但我不能让它工作,因为我想:

<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <excludeGroupIds>jakarta.xml.bind</excludeGroupIds>
        <excludeArtifactIds>jakarta.xml.bind-api</excludeArtifactIds>
        <excludeTransitive>true</excludeTransitive>
        <excludeScope>compile</excludeScope>
        <excludeClassifiers>jdk8</excludeClassifiers>
    </configuration>
....
biswetbf

biswetbf1#

我会把它排除在外。
然后,您可以再次将其声明为dependency,但声明在基于JDK版本激活的概要文件中,如

<profiles>
  <profile>
    <activation>
      <jdk>11</jdk>
    </activation>
    ...
  </profile>
</profiles>

相关问题