添加对 mongock 的依赖后,如何解决 Java 9 Modularity 的问题?

How to fix the issue with Java 9 Modularity after adding dependency on mongock?

我们正在开发使用 MongoDB 作为存储的 Spring 启动应用程序。 我们想将数据库迁移工具添加到我们的项目中:mongock.

pom.xml我添加了一个新的依赖:

<dependency>
    <groupId>com.github.cloudyrock.mongock</groupId>
    <artifactId>mongock-spring</artifactId>
    <version>3.3.2</version>
</dependency>

IntelliJ Idea 建议我将以下行添加到 module-info.java:

requires mongock.spring;
requires mongock.core;

之后我无法再构建项目,出现以下错误:

Module 'com.acme.project-name' reads package 'com.github.cloudyrock.mongock' from both 'mongock.spring' and 'mongock.core'

我对Java 9 Modularity了解不多,所以我一直在解决这个问题,请指教。

如果值得解决这个问题,可以升级到最新版本的工件。

<dependency>
    <groupId>com.github.cloudyrock.mongock</groupId>
    <artifactId>mongock-spring</artifactId>
    <version>4.0.1.alpha</version>
</dependency>

您可以通过 this and 问答了解问题的含义。

如果您要分析这个问题,您可以直接注意到版本 3.3.2 中有两个工件作为依赖项引入外部库 - mongock-springmongock-core。此外,如果您查看 JAR,您会发现它们的包结构是相同的(即两者在 com.github.cloudyrock.mongock 中都有 类),这就是您在引入它们时看到的冲突原因模块路径。

编辑:扩展讨论移至#mongock/issues/212