java - 为 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 属性?
解决方案
仅当检测到精确的 jdk 版本时,您才能使用 Maven 配置文件添加特定依赖项:
<profile>
<id>Java 8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<dependencies>
<dependency>…</dependency>
</dependencies>
</profile>
您还可以使用自定义属性来激活配置文件。有关详细信息,请参阅 Maven 指南:
https://maven.apache.org/guides/introduction/introduction-to-profiles.html
推荐阅读
- python - 使用 Pytorch 进行规范化流训练中的 log 行列式 jacobian
- graphql - 如何使用 lambda/Neptune-stream 等外部数据源通知 AWS AppSync 订阅者?
- anylogic - AnyLogic - 两边都用于新的存储对象
- tensorflow - keras.utils.layer_utils 和 keras.utils.generic_utils 等效于 tf.keras
- for-loop - VBScript:根据文件名中的字符串将文件移动到不同的文件夹(对于每个循环)
- android - Cipher.init 在 BiometricPrompt 成功回调中失败并出现 UserNotAuthenticatedException
- c# - 计算已缩放和调整大小的裁剪矩形
- qt - qt 版本与 qbs 不兼容
- angular - 如何访问 Guard 中的 Angular 服务?
- python - Python函数捕获变量