【问题标题】:How to solve this maven multi module dependency issue? It's not importing from local m2 after installing如何解决这个 Maven 多模块依赖问题?安装后没有从本地 m2 导入
【发布时间】:2020-04-23 03:52:38
【问题描述】:

我有一个包含两个模块的项目。父 POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>bc</artifactId>
    <packaging>pom</packaging>
    <version>1.3-SNAPSHOT</version>

    <modules>
        <module>njoy</module>
        <module>api</module>
    </modules>

</project>

njoy 模块 POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>bc</artifactId>
        <groupId>org.example</groupId>
        <version>1.3-SNAPSHOT</version>
    </parent>


    <modelVersion>4.0.0</modelVersion>

    <artifactId>njoy</artifactId>
    <packaging>jar</packaging>

</project>

api 模块 POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>bc</artifactId>
        <groupId>org.example</groupId>
        <version>1.3-SNAPSHOT</version>
    </parent>


    <modelVersion>4.0.0</modelVersion>

    <artifactId>api</artifactId>
    <packaging>jar</packaging>

</project>

我已经为父 POM 完成了 mvn clean install,以便它进入我的本地 m2 存储库。 现在我想通过提供它作为依赖项来使用这个项目作为另一个项目(比如实验)中的依赖项。 这些是在我的 m2 存储库中创建的文件夹。

这是我的另一个项目,我将它用作依赖项,它的 POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>experiments</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>bc</artifactId>
            <version>1.3-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>klk</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

但它找不到多模块项目工件,其中还有另一个依赖项是单模块项目(klk)并且没有问题。

请帮忙。我在这里错过了什么?

提前致谢!!

【问题讨论】:

    标签: java maven microservices pom.xml maven-plugin


    【解决方案1】:

    工件bc 只是一个带有一些模块的pom。它不能用作依赖项。您可能认为可以通过引用父 POM 来引用“所有工件”。这是不可能的。

    工件njoyapi 是罐子——它们可以用作另一个项目的依赖项。

    【讨论】:

    • 感谢您的回复。所以你告诉我,当我想引用一些多模块项目时,我必须将每个模块添加为依赖项?或者有没有办法用一个单一的依赖来做到这一点?
    • 我的建议与其他情况相同:添加您在项目中实际需要的所有依赖项(例如,因为您在源代码中使用它们)。如果您只需要其中一个模块,只需添加它。没有机制可以一次添加多模块项目的所有模块,但我不明白你为什么需要它。
    • 有任何疑问或问题吗?
    • 哦,是的,我有点忙于检查要点。因此,让我们假设我在一个项目中有 10 个模块(比如银行),并且出于某种原因我需要与它们交互以提取、存款、计算利息等。我必须将它们中的每一个都添加为依赖项?或者有什么方法可以将它们捆绑起来并给你一个单一的依赖关系?
    • 不,fat jars 并不意味着依赖项,仅适用于独立应用程序。我的意思是,如果您总是需要所有功能,您可以将模块合并为一个。
    猜你喜欢
    • 1970-01-01
    • 2015-02-17
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多