MavenError:无法在项目上执行目标:无法解决依赖关系在Maven Multimodule项目中

时间:2014-07-10 10:02:05

标签: java maven exception dependencies multi-module

我正在尝试创建一个maven多模块项目。项目创建成功,但当我尝试使用一个模块作为另一个模块的依赖项时,它会生成异常。当我使用eclipse创建模块时,我选择打包为jar,但是当创建模块时,在子pom.xml中没有提及包装标签,我手动将包装标签作为jar插入。 以下是我的父pom.xml

<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>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
-------------------------
<modules>
    <module>empirecl-web</module>
    <module>empirecl-dao</module>
    <module>empirecl-service</module>
    <module>empirecl-api</module>
</modules>
道儿童模块:

<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>
<parent>
    <groupId>com.netsol</groupId>
    <artifactId>empirecl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-dao</artifactId>
<packaging>jar</packaging>
<name>empirecl-dao</name>
------------------------

服务子模块:

<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>
<parent>
    <groupId>com.netsol</groupId>
    <artifactId>empirecl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-service</artifactId>
<packaging>jar</packaging>
<name>empirecl-service</name>

<dependencies>
    <dependency>
        <groupId>com.netsol</groupId>
        <artifactId>empirecl-dao</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
------------------------------------------

Dao模块maven清理并安装成功,但是当我尝试使用服务模块时,它会产生以下异常:

[ERROR] Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Could not find artifact com.netsol:empirecl:pom:0.0.1-SNAPSHOT -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT

我正在尝试从网络上找到解决方案,但仍未找到解决方案。在eclipse中,当我打开Dependency Hierarchy服务模块时,它将DAO模块显示为文件夹而不是jar。以下是服务模块Dependency Hierarchy的屏幕截图。

enter image description here

7 个答案:

答案 0 :(得分:24)

如果有人回到这里,我认为这里的问题是无法首先安装父pom,所有这些子模块都依赖于此,因此Maven Reactor无法收集构建子模块所需的依赖项

所以从根目录(这里是D:\luna_workspace\empire_club\empirecl)它可能只需要一个:

mvn clean install

(旁白:<relativePath>../pom.xml</relativePath>并非真正需要it's the default value)。

答案 1 :(得分:2)

就我而言,我忘记了它是包装冲突罐与pom。我忘了写

<packaging>pom</packaging>

在每个子pom.xml文件中

答案 2 :(得分:0)

我的解决方案是将其插入artifaktIdversion

之间
<groupId>com.onlinechat</groupId>
<artifactId>chat-online</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>server</module>
    <module>client</module>
    <module>network</module>
</modules>

答案 3 :(得分:0)

我的解决方案:

  1. 删除当前工作区中的所有项目
  2. 再次全部导入
  3. maven更新项目(Alt + F5)-> 全选并选中强制更新快照/发布
  4. 构建(Ctrl + B)直到没有任何构建

第二次尝试后对我有用。

答案 4 :(得分:0)

对我来说,在 <dependency management><dependencies> 下添加以下代码块解决了问题。

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b06</version>
</dependency>

答案 5 :(得分:0)

删除或关闭所有其他项目,然后重新启动 netbeans IDE,然后重试。

答案 6 :(得分:0)

这对我有用 - 转到 Java 构建路径 --> 订购和导出(检查 JRE 系统库和 maven 依赖项)在我的情况下,这两个未选中。