gpt4 book ai didi

Java 9 模块和 uber-jar

转载 作者:行者123 更新时间:2023-11-29 04:17:31 27 4
gpt4 key购买 nike

在开发 Java 库时,我们目前使用 Apache Maven Shade 插件通过重命名它们的包名称来隐藏对其他库 (jars) 的内部依赖性。

是否可以通过使用 Java 9 模块系统而不导出内部使用的库的名称来隐藏这些内部库依赖项?即:

  1. 模块 A 和 B 都包含但不导出类 org.codehaus.jackson.map.ObjectMapper(使用例如 Maven Shade 插件包含),该类的版本不同
  2. 模块 A 使用模块 B

每个模块是否仍会使用其实现 org.codehaus.jackson.map.ObjectMapper?

我相信它应该如此,但我没有找到明确证实这一点的文档,也没有任何文本/示例推荐这种方法来解决这个非常常见的版本控制问题。

最佳答案

此问题描述为 http://openjdk.java.net/projects/jigsaw/spec/issues/#MultiModuleExecutableJARs并且还没有支持它。如果所有依赖项都是模块,那么使用 jlink 来解决这个问题是有意义的。但是只要至少有一个非模块,就没有可用的解决方案。这是JDK/JRE内部需要解决的事情。它仍然是一个有效的案例,所以我建议在 jigsaw-dev 邮件列表中提出这个问题并引用#MultiModuleExecutableJARs

关于Java 9 模块和 uber-jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com