首页 > 解决方案 > 为 maven 使用不同版本的 jar:一个用于 JDK 8,另一个用于 JDK 11

问题描述

我们正在使用 JDK 11 测试编译。在我们的 pom.xml 中,我们依赖于 xml-apis:

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>

代码在 JDK 8 中编译得很好,但在 JDK 11 中出现错误,因为 xml-apis 中的大多数类也在 JDK 11 中,并且发生了这个错误: 包 javax.xml.parsers 可以从多个模块访问:未命名, java.xml

pom.xml 中有没有一种方法可以有条件地使用依赖项,例如是否设置了 jdk11.compile 属性?

标签: javajava-11java-module

解决方案


仅当检测到精确的 jdk 版本时,您才能使用 Maven 配置文件添加特定依赖项:

<profile>
    <id>Java 8</id>
    <activation>
        <jdk>1.8</jdk>
    </activation>
    <dependencies>
        <dependency>…&lt;/dependency>
    </dependencies>
</profile>

您还可以使用自定义属性来激活配置文件。有关详细信息,请参阅 Maven 指南:

https://maven.apache.org/guides/introduction/introduction-to-profiles.html


推荐阅读