【问题标题】:Maven multi module project errorMaven多模块项目错误
【发布时间】:2013-08-13 11:49:45
【问题描述】:

我正在使用以下文件夹结构:

SpringMvcExample
               \_ pom.xml (root pom)
               \_ parent
                        \_ pom.xml (parent pom)
               \_ model 
                        \_ src
                        \_ pom.xml (child pom)

以下是文件示例:

root.pom:

 <groupId>com.pack</groupId>
    <artifactId>SpringMvcExample</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>SpringMvcExample</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <defaultGoal>package</defaultGoal>
    </build>
    <modules>
        <module>parent</module>
        <module>model</module>
    </modules>

父pom:

<modelVersion>4.0.0</modelVersion>
    <groupId>com.pack</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>parent</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.pack</groupId>
            <artifactId>model</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

模型 pom:

<modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.pack</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
    </parent>
    <groupId>com.pack</groupId>
    <artifactId>model</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>model</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

当我尝试从模型文件夹调用 mvn clean install 时,出现以下错误:

[ERROR] Failed to execute goal on project model: Could not resolve dependencies for project com.pack:model:jar:1.0-SNAPSHOT: Could not find artifact com.pack:model:jar:1.0-SNAPSOT -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project model: Could not resolve dependencies for project com.pack:model:jar:1.0-SNAPSHOT: Could not find artifact com.pack:model:jar:1.0-SNAPSHOT

我应该怎么做才能解决它?

更新: 因为不是所有人都遇到过相同的结构,here 是一个博客链接,描述了它,它的优点和缺点。这是我正在尝试重用的example

【问题讨论】:

    标签: java maven multi-module build-system


    【解决方案1】:

    为什么你的父 pom 依赖于它的子模块,请删除它然后尝试。

    原因:当您构建此模块时,它会首先尝试构建需要子 (model-1.0-SNAPSHOT) jar 才能成功构建的父级(因为您已经提供了对它的依赖),到目前为止,您的子模块尚未构建,因此它的工件不可用。

    如需更多参考,我建议您查看How build order is determined by Maven Reactor

    从规格:

    • 项目依赖于构建中的另一个模块
    • 插件声明,其中插件是构建中的另一个模块
    • 插件依赖于构建中的另一个模块
    • 构建中另一个模块的构建扩展声明
    • 元素中声明的顺序(如果没有其他规则适用)

    【讨论】:

      【解决方案2】:

      我认为问题在于您在 pom.xml 中为 com.pack:parent 定义了对 com.pack:model 的依赖关系,它本身就是 com.pack:model 的父级。在构建 com.pack:model 时,maven 会查看模型的父 pom 并找到对 com.pack:model 的依赖项。因为在 maven 在存储库中找不到 jar 之前,您从未构建过项目。

      我建议从父 pom.xml 中删除对 com.pack:model 的依赖。父项不应依赖于其子项目之一。

      【讨论】:

        【解决方案3】:

        对于初学者,您的父 POM 通常应该是您所谓的“root.pom”;模块应该在父目录内的目录中。将“父”和“子”作为“根”的模块没有意义,并且您的根 POM 说它是“子”的父,但“子”POM 说“父”是它的父;也许您不熟悉 Maven 父 POM?

        我注意到,在您的错误消息中,Maven 正在寻找不带 H 的 1.0-SNAPSOT 版本。这表明您的本地存储库中有一些来自以前本地安装运行的杂物,我怀疑纠结的依赖项导致 Maven 尝试以与您预期不同的顺序进行解析,并且它在您的本地存储库中找到了一个副本,该副本引用了带有错字的版本。

        【讨论】:

          猜你喜欢
          • 2019-05-05
          • 2018-02-06
          • 1970-01-01
          • 2021-02-09
          • 2011-01-04
          • 2017-10-20
          • 1970-01-01
          • 2014-09-14
          • 2016-06-12
          相关资源
          最近更新 更多