我目前正在测试将现有应用程序迁移到 Jigsaw 模块。我的一个模块使用 ElasticSearch 及其 Groovy 插件。
不幸的是,他们共享一个拆分包,所以
mvn install
给我:x reads package org.elasticsearch.script.groovy from both lang.groovy and elasticsearch
对描述符中的每个必需模块执行一次,其中 x 是每个模块的名称。
我假设在 Java 9 最终版本之前,较新的 elasticsearch 版本将消除拆分包,但是通常有一种方法可以处理遗留依赖项中的拆分包吗?
我希望能够将它们放在类路径而不是模块路径上,但在阅读 this conversation on the mailing list 之后似乎没有办法告诉 Maven 编译器这样做。
maven 3.3.9 -
maven-compiler-plugin 3.6.0 -
jdk9-ea+149 -
Elasticsearch 2.3.3
最佳答案
经过更多测试后,我认为有一些选项可以解决许多(但绝对不是全部)第 3 方拆分包情况。
根据具体情况,这些选项之一可能非常适合解决拆分包问题。但是它们都不能处理连贯的代码实际上需要从拆分包的两个部分访问类的情况。
关于maven - 如何处理自动模块中的拆分包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385229/