我正在将Java项目转换为使用模块。我的一个模块依赖于hamcrest
库,它需要两个jar文件hamcrest.core
和hamcrest.library
。这两个jar文件都具有org.hamcrest
软件包。因此,当我的模块要将这两个jar视为自动模块时,它会失败,因为模块路径中的两个模块不能具有相同名称的软件包。我进行了大量搜索,发现了关于stackoverflow的一些相关内容。如果我不想重建那些依赖关系,看来我有两个合理的选择:
这是我的问题:
预先感谢
答案 0 :(得分:2)
好吧,我终于设法解决了这个问题:
hamcrest-all
的新Maven模块,并添加对hamcrest-core
和hamcrest-library
的依赖关系。maven-assembly-plugin
设置为false,将appendAssemblyId
添加到此模块。hamcrest-core
和hamcrest-library
的依赖,而是向hamcrest-all
添加依赖。hamcrest-core
的依赖性时,排除hamcrest-library
和hamcrest-all
。它的实际作用是将hamcrest-core
和hamcrest-library
解压缩到为hamrest-all
创建的jar文件中。而且由于JMPS将每个jar文件都视为一个模块,所以问题就消失了:)