我正在将一个 java 项目转换为使用模块。我的一个模块依赖于hamcrest库,它需要 jar 文件hamcrest.core和hamcrest.library. 这两个jar文件都有org.hamcrest包。因此,当我的模块想要将这两个 jar 视为自动模块时,它会失败,因为模块路径中的两个模块不能有同名的包。我搜索了很多,在stackoverflow上找到了一些相关的东西。如果我不想重建这些依赖项,我似乎有两个合理的选择:使用我的构建自动化工具(maven)将两个 jar 合并到一个 jar 中。不知何故告诉java编译器这两个jar应该被视为一个单独的自动模块。所以这是我的问题:这两个选项中的任何一个都可能吗?如果是,如何?有没有更好的选择?提前致谢
1 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
好的,我终于设法像这样解决它:
创建一个新的 maven 模块,
hamcrest-all
并在hamcrest-core
和上添加依赖项hamcrest-library
。添加
maven-assembly-plugin
到此模块并appendAssemblyId
设置为 false。删除
hamcrest-core
与hamcrest-library
其他 maven 模块的依赖关系,而是将依赖关系添加到hamcrest-all
.exclude
hamcrest-core
和hamcrest-library
when 包括对hamcrest-all
.
它实际上所做的是解压缩hamcrest-core
并hamcrest-library
在为hamrest-all
. 而且因为每个 jar 文件都被 JMPS 视为一个模块,所以问题就消失了:)
添加回答
举报
0/150
提交
取消