首页 > 解决方案 > Gradle Maven 发布插件与多个 JDK

问题描述

我有一个想要使用 Maven 发布插件发布的 Java 库项目。我面临的挑战是我想将它发布到同一个本地 nexus 存储库,但使用多个 JDK 版本进行编译。就像我想使用 JDK 1.8 和 JDK 11 编译相同的源代码一样。我这样做的原因是,我的项目有多个使用者,并希望确保我能够提供正确的工件。

我从微软的 MSSQL Server 驱动程序中得到了这个想法。它们具有专门为各个 JDK 发布的相同版本的驱动程序。

提前致谢!

标签: javamavengradlebuild.gradlegradle-plugin

解决方案


您描述的用例正是为其发明了Multi-Release JAR 文件的用例。

mrJar Gradle 插件是专门 为那个 MRJAR 用例而发明的插件。

事实上,mrJar插件使用自己来创建发布到插件门户的 JAR。它在构建过程中自行创建一个从插件存储库分发的模块化多版本 JAR工件。

例如:只有 Gradle 6.0 或更高版本支持 Java 13。在 Gradle 的插件门户上发布的mrJar插件的 JAR 文件具有仅在以 Java 13 运行的项目中应用时才提供 Java 13 支持的智能。当插件在 Java 8、9、10、11、12 中运行时,Java 13 功能不存在。

我很确定使用mrJar插件是您问题描述的用例的解决方案。这些使用说明将引导您完成您需要做的事情。


推荐阅读