java - Gradle Maven 发布插件与多个 JDK
问题描述
我有一个想要使用 Maven 发布插件发布的 Java 库项目。我面临的挑战是我想将它发布到同一个本地 nexus 存储库,但使用多个 JDK 版本进行编译。就像我想使用 JDK 1.8 和 JDK 11 编译相同的源代码一样。我这样做的原因是,我的项目有多个使用者,并希望确保我能够提供正确的工件。
我从微软的 MSSQL Server 驱动程序中得到了这个想法。它们具有专门为各个 JDK 发布的相同版本的驱动程序。
提前致谢!
解决方案
您描述的用例正是为其发明了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插件是您问题描述的用例的解决方案。这些使用说明将引导您完成您需要做的事情。
推荐阅读
- javascript - 有没有办法在带有数组的对象中搜索 mongodb 中的值,并且该值可以存在于该数组的任何对象中
- r - 为什么 is.na 和 !="" 以不同的方式过滤信息
- arrays - 如何按 PowerShell 中的所有属性进行分组?
- apscheduler - 在 python 的 APScheduler 中同时运行同一个作业不止一次
- flutter - 在多个条件下排序列表
- reactjs - 如何以所需的顺序选择不同的图像
- ruby-on-rails - 构建一个干净的 Modal 来展示 S3 Bucket
- r - 为什么不会 replace_na 实际上使用 dplyr 和管道替换缺失值?
- modelica - Modelica integerChange 块没有按预期工作?
- html - 如何检查复选框是否被选中并在基于 TypeScript 的 Angular 网站中获取其关联的文本值?