1

我正在尝试模块化 JHipster 5 (Spring Boot 2) 应用程序,但遇到了拆分包问题。

在 module-info.java 我有以下冲突的自动模块:

requires problem.spring.web;
requires problem;
requires jackson.datatype.problem;

当我使用 Maven 构建项目时,由于包名冲突,我收到了几个错误,org.zalando.problem如下所示:

error: the unnamed module reads package org.zalando.problem from both problem and jackson.datatype.problem
error: module problem.spring.web reads package org.zalando.problem from both jackson.datatype.problem and problem

我想知道如何解决这个问题。我是否也必须等待第三方库也被模块化?解决这种冲突的好方法是什么?

本文解释了如何解决拆分包问题。我应用它来解决拆分包之间的问题jsr305,并在构建时java.xml.ws.annotation使用--patch-module参数,如此所述。但是,当我对这些包进行相同尝试时,该项目没有编译。

该项目的源代码在GitHub上可用

4

1 回答 1

0

如果您想使用将包拆分为模块的 JAR,这--patch-module是唯一的方法,但这是一种艰巨的方法。除了修补之外,您还需要制作模块图的其余部分。假设您正在使用start.up的内容修补模块megacorp,然后:

  • 你必须让megacorp读取所有start.up的依赖项--add-reads
  • 您必须使所有使用start.up的模块都读取megacorp--add-reads
  • 您必须确保start.up不在模块路径上

这可能非常复杂,尤其是当您一路与 Maven 战斗时。你确定,没有办法简单地合并这两个工件吗?

如果没有,我会说这个项目可能还没有准备好进行模块化。

于 2018-06-17T17:56:27.483 回答