首页 > 解决方案 > 为什么maven不能解析父版本中的表达式?

问题描述

我遇到了一个 Maven 项目构建的问题。我的项目结构如下

 my-message
 |
  ---my-message-api
 |
  --- my-message-provider

下面是 pom.xml 代码

my-message.pom

<parent>
<groupId>com.xiaofeng.my</groupId>
<artifactId>my-parent</artifactId>
<version>0.0.1</version>
</parent>
<artifactId>my-message</artifactId>    
<version>${my-message.version}</version>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<properties>
    <my-message.version>0.0.1-SNAPSHOT</my-message.version>
</properties>
<modules>
    <module>my-message-api</module>
    <module>my-message-provider</module>
</modules>

my-message-api.pom
<parent>
<groupId>com.msh.my</groupId>
<artifactId>my-message</artifactId>
<version>${my-message.version}</version>
<relativePath>../pom.xml</relativePath>
</parent>

my-message-provider.pom
<parent>
    <groupId>com.msh.my</groupId>
    <artifactId>my-message</artifactId>
    <version>${my-message.version}</version>
    <relativePath>../pom.xml</relativePath>
</parent>
<artifactId>my-message-provider</artifactId>
<dependencies>
    <dependency>
        <groupId>com.msh.my</groupId>
        <artifactId>my-message-api</artifactId>
        <version>${my-message.version}</version>
    </dependency>
</dependencies>

maven 安装输出

Failed to execute goal on project my-message-provider: Could not resolve dependencies for project 
com.msh.my:my-message-provider:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.msh.my:my-message-api:jar:0.0.1-SNAPSHOT: 
Failed to read artifact descriptor for com.msh.my:my-message-api:jar:0.0.1-SNAPSHOT: Could not find artifact com.msh.my:my-message:pom:${my-message.version}
in nexus (http://nexus_url:8081/nexus/content/groups/public)

为什么maven不能解析父版本中的表达式?请帮我

标签: javamaven

解决方案


因为您不能在模块的父级规范中使用变量。Maven 需要能够解析整个模型结构,然后才能解析变量。


推荐阅读