我目前正在测试将现有应用程序迁移到 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 方拆分包情况。
- 清理依赖项 - 也许依赖项实际上并不需要,或者可以由更新的(或更独特的)JAR 替换
- 将您自己的模块重组为两个模块,每个模块从两个第三方模块之一读取包(如果可能/合理)
- 将第 3 方模块之一(或两个)包装在一个简单的模块中,该模块除了显式导出模块实际需要的包之外什么也不做。
根据具体情况,这些选项之一可能适合解决拆分包问题。但它们都无法处理这样的情况:一段连贯的代码实际上需要访问拆分包的两个部分中的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)