【问题标题】:Build Java module and old jar for different Java versions from single source code从单一源代码为不同 Java 版本构建 Java 模块和旧 jar
【发布时间】:2021-09-17 07:12:18
【问题描述】:

我有一个目标为1.8 的 Maven Java 库项目。我想将它转换为现代客户端的 Java 模块,但保持旧客户端的向后兼容性,并为两个客户端发布新版本:

 my-mod   my-lib
 -v0.3    -v0.3
    \    /
     \  /
      \/
   my-lib-v0.2
       |
   my-lib-v0.1

所以我的问题是如何正确地将module-info.java 添加到现有项目中并能够将其编译为1.8 目标,以及如何配置 Maven 为两个 Java 版本部署两个版本,例如对于1.817

【问题讨论】:

    标签: java maven java-8 java-module java-17


    【解决方案1】:

    只需在您的包文件夹中创建您的module-info.java。它将被 Java 8 忽略并被 Java 9+ 拾取。也许你想看看这篇不错的博文:https://www.baeldung.com/java-9-modularity

    【讨论】:

    • 如果我在 src/main/java: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project test: Compilation failure: modules are not supported in -source 8 中添加这个文件,Maven 编译插件会失败
    • 所以您想要包含为不同 Java 版本构建的类的 same JAR 文件?那是一个不同的问题和答案。因此,您需要激活multi-release。可以在此处找到有关此的快速信息:tutorials.jenkov.com/java/…
    • 不,我想从一个 maven 项目中制作两个 jars(源代码与 1.8 兼容):一个 jar 具有 1.8 目标,另一个 jar 具有 17 个目标和模块支持
    • 在这种情况下,只需查看 Maven 手册:maven.apache.org/plugins/maven-compiler-plugin/examples/…
    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 2017-01-09
    • 2012-08-25
    • 2023-02-22
    • 2015-09-20
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    相关资源
    最近更新 更多