首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDK9自动模块和“拆分包”依赖项

JDK9自动模块和“拆分包”依赖项
EN

Stack Overflow用户
提问于 2018-11-11 03:37:12
回答 1查看 848关注 0票数 3

我正在将一个java项目转换为使用模块。我的一个模块依赖于hamcrest库,它同时需要jar文件hamcrest.corehamcrest.library。这两个jar文件都有org.hamcrest包。因此,当我的模块想将这两个jars视为自动模块时,它会失败,因为模块路径中的两个模块不能有同名的包。我搜索了很多,并在堆叠溢出上找到了一些相关的东西。如果我不想重建这些依赖关系,我似乎有两个合理的选择:

  1. 使用我的构建自动化工具( maven)将两个jar合并到一个jar中。
  2. 以某种方式告诉java编译器,这两个jars应该被看作是一个单独的自动模块。

以下是我的问题:

  • 这两种选择中的任何一种都可能吗?如果是,怎么做?
  • 还有更好的选择吗?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-15 23:27:10

好的,我终于像这样解决了这个问题:

  1. 创建一个名为hamcrest-all的新maven模块,并添加对hamcrest-corehamcrest-library的依赖关系。
  2. maven-assembly-plugin添加到此模块,并将appendAssemblyId设置为false。
  3. 从其他maven模块中移除hamcrest-corehamcrest-library的依赖项,然后将依赖项添加到hamcrest-all中。
  4. 当包含对hamcrest-core的依赖时,排除hamcrest-allhamcrest-all

它实际上所做的是在为hamcrest-core创建的jar文件中解压缩hamcrest-libraryhamrest-all。由于JMPS将每个jar文件作为一个模块处理,所以问题就消失了:)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53245628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档