如何处理自动模块中的拆分包?

2024-01-07

我目前正在测试将现有应用程序迁移到 Jigsaw Modules。我的模块之一使用 ElasticSearch 及其 Groovy 插件。

  • org.elasticsearch:elasticsearch
  • org.elasticsearch.module:lang-groovy

不幸的是,他们共享一个拆分包,所以mvn install给我:

x 从 lang.groovy 和 elasticsearch 读取包 org.elasticsearch.script.groovy

对于描述符中的每个必需模块一次,其中 x 是每个模块的名称。

我假设当 Java 9 最终版本时,较新的 Elasticsearch 版本将消除拆分包,但是通常有一种方法可以处理遗留依赖项中的拆分包吗?

我希望能够将它们放在类路径而不是模块路径上,但是在阅读之后邮件列表中的此对话 https://www.mail-archive.com/users@maven.apache.org/msg138931.html似乎没有办法告诉 Maven 编译器这样做。


行家 3.3.9 - maven-编译器-插件 3.6.0 - jdk9-ea+149- 弹性搜索 2.3.3


经过更多测试后,我认为有一些选项可以解决许多(但绝对不是全部)第 3 方拆分包情况。

  1. 清理依赖项 - 也许依赖项实际上并不需要,或者可以由更新的(或更独特的)JAR 替换
  2. 将您自己的模块重组为两个模块,每个模块从两个第三方模块之一读取包(如果可能/合理)
  3. 将第 3 方模块之一(或两个)包装在一个简单的模块中,该模块除了显式导出模块实际需要的包之外什么也不做。

根据具体情况,这些选项之一可能适合解决拆分包问题。但它们都无法处理这样的情况:一段连贯的代码实际上需要访问拆分包的两个部分中的类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理自动模块中的拆分包? 的相关文章

随机推荐

  • R:指定晶格中不同面/面板的颜色

    我的数据如下 grp rep 1 2 each 100 chr c rep 1 10 each 10 rep 1 10 each 10 var paste grp chr chr sep pos rep 1 10 20 yvar rnorm
  • Java ArrayIndexOutOfBounds 错误

    所以我有一个数组 Canvas 256 256 它的随机索引 Canvas r r r 是随机的 设置为 1 然后我想循环遍历该数组以准确查看哪个索引不为 0 然后随机选择一个点 上 下 左 右 并将其设置为 1 它在第一个循环中工作得很好
  • 如何从 Sinatra 发送二进制数据?

    我想从 Sinatra 应用程序发送二进制数据 以便用户可以将其作为文件下载 我尝试使用send data但它给了我一个undefined method send data 我怎样才能做到这一点 我可以将数据写入文件 然后使用send fi
  • 在 UITextView 上点击时未调用 UICollectionView didSelectItemAtIndexPath

    我有一个UICollectionView与定制细胞 他们有一个UITextView大部分覆盖整个细胞 这在使用时会出现问题didSelectItemAtIndexPath 触发它的唯一方法是点击外部UITextView 我希望它在您点击的单
  • PHP PDO 如何运行多个查询请求?

    你好 我正在尝试在 PHP 中执行此 SQL 请求PDOStatement CREATE TEMPORARY TABLE r1 SELECT CONCAT MONTH Heure deb DAY Heure deb as Date Heur
  • 具有嵌套属性的 DynamoDB SCAN

    在给定的示例中 我可以通过 order shortCode 扫描 DynamoDB 吗 控制台表明我不能使用点表示法 并且我找不到任何相关文档 key2 cj11b1ygp0000jcgubpe5mso3 order amount 74 2
  • 如何向 ngx-bootstrap/tooltip 添加自定义样式

    我更改了工具提示的背景和边框颜色 工具提示中的箭头应填充白色而不是黑色并带有边框 那可能吗 我已经尝试过堆栈闪电战 https stackblitz com edit angular j8vcbb 将其添加到您的style css file
  • 如何让 shell 脚本每 5 分钟重复一次

    如何让这个 shell 脚本每五分钟重复一次 我在service d中使用它 system bin sh sleep 60 su c CLASSPATH storage emulated 0 DisplayToggle dex app pr
  • 无法下载spark-nlp库提供的管道

    我无法使用spark nlp库提供的预定义管道 recognize entities dl 我尝试安装不同版本的 pyspark 和 Spark nlp 库 import sparknlp from sparknlp pretrained
  • TWebBrowser 是否随 IE 一起更新?

    我在 D7 应用程序中使用 TwebBrowser 问题是 当我升级 IE 时 该组件将使用新的 IE 来渲染页面吗 Yes TWebBrowser里面的SHDocVw单位内部创建一个IWebBrowser2OLE 控制 并且该界面使用已安
  • amcharts 中动态图表容器宽度和高度

    我正在使用 amcharts 我想要图表容器的宽度和高度动态取决于 amcharts 中 x 轴上没有列和 y 轴上的最高值 这是我的小提琴我使用css如下 graphsdata width 100 height 800px overflo
  • 网页中允许的最大 div 数

    您好 我想知道网页上允许的 div 数量是否有限制 例如 当 Internet Explorer 必须渲染具有一千个 div 的网页时 它会开始感到窒息吗 我知道这是一篇旧文章 但我最近做了一个与该主题直接相关的测试 我想分享我的结果 我创
  • Socket.io 在 Express Route 上发出

    我想在调用某些 API 路由时向客户端发送一些数据 我必须遵循 server js 上的代码 var app express var http require http Server app var io require socket io
  • 为什么此代码在到达 StreamReader 的第一个 ReadLine 时挂起?

    我在第一个参数中将一个大文件传递给下面的 SendXMLFile 但由于它导致手持设备 挂起 冻结 我暂时硬编码了一个小得多的文件 3 KB 而不是 1121 KB 供测试用 该文件确实存在 与 exe dll 位于同一文件夹中 如以下代码
  • Iframe 和同源策略以及反向代理黑客

    我一直在阅读具有不同域的 Iframe 然后是父文档 我有点困惑 据我了解 如果 iframe 与其父文档来自同一域 则父文档可以访问 iframe 的文档 看来我可以通过以下技巧来规避这个问题 我在以下位置设置了一个网络服务器mydoma
  • Android:处理ListView回收

    我正在开发一个音板应用程序 在其中使用 Listview Activity 但是由于Android的Listview具有回收其listview的属性 滚动列表视图时 我对所选文本视图所做的更改会反映在所有页面中 我不希望这种事发生 那么我该
  • J2ME 的 JSON 解析器

    我需要一个与 J2ME CLDC 1 1 配合使用的基本 JSON 解析器 Google 搜索返回了大量关于此问题的答案 有些甚至在 stackoverflow 上 但似乎所有内容都指向不再可用的库和解决方案 例如 很多都指向应该位于 js
  • 过滤负时间增量

    考虑一系列持有timedelta64 ns 测量两个事件 A 和 B 之间的时间差 gt time deltas 499900 1 days 23 45 13 499916 1 days 23 50 57 499917 00 03 27 4
  • VB 6:如何执行 .bat 文件但等到其运行完成后再继续?

    VB 6 如何执行 bat 文件但等到其运行完成后再继续 您将需要使用 Win32 API 调用Shell执行Ex http msdn microsoft com en us library bb762154 VS 85 aspx和从SHE
  • 如何处理自动模块中的拆分包?

    我目前正在测试将现有应用程序迁移到 Jigsaw Modules 我的模块之一使用 ElasticSearch 及其 Groovy 插件 org elasticsearch elasticsearch org elasticsearch m