【问题标题】:How to fix the issue with Java 9 Modularity after adding dependency on mongock?添加对 mongock 的依赖后如何解决 Java 9 Modularity 的问题?
【发布时间】:2020-11-06 01:34:06
【问题描述】:

我们正在开发使用 MongoDB 作为存储的 Spring Boot 应用程序。 我们想在我们的项目中添加数据库迁移工具: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 模块化了解不多,所以我一直坚持解决这个问题,请指教。

【问题讨论】:

    标签: mongodb java-9 java-module java-platform-module-system mongock


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 这是否意味着 mongock 本身存在问题?而且没有办法使用3.3.2版本?
    • @user471011 表示至少不能在模块路径上使用mongock-spring:3.3.2。因此,没有module-info.java,您仍然可以使用Java-9+ 和3.3.2 的组合。 (您的依赖项应该在类路径上)
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 2021-12-02
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多