我正在努力使我的项目为Java 9做好准备,并且我遇到了拆分包(共享相同包的工件)的问题。
我的应用程序依赖于至少两个第三方遗留工件(使用Java< 9构建)。当我使用Java 9运行Maven时,我得到:
[ERROR] module myapp reads package P from both A and B
这是正确的,因为包P存在于A.jar和B.jar中,但没有重叠的类。我知道这是Java 9的一个问题,我在https://blog.codefx.org/java/java-9-migration-guide/#fixes-2中研究了建议的解决方案。总结它是&#34;修复你的代码&#34; (不可能,因为第三方JAR)或&#34;使用命令行选项运行&#34; (最有趣的可能是--patch-module <package>=<path-to-jar>
)。
还有另一个想法here,其中说
将一个第三方模块(或两者)包装在一个简单的模块中,该模块除了显式地仅导出模块实际需要的软件包外什么都不做。
但是我怎样才能在Maven(3.5.0)中实现这一点,我目前拥有的只有<dependency>
和maven-compiler-plugin:3.7.0 - 而且我不想静态重新包装第三方JAR?
欢迎提供示例的任何提示或指针。
答案 0 :(得分:0)
示例为我工作:
<Export-Package>
org.hibernate.*;version=${pkgVersion};-split-package:=merge-last
</Export-Package>