在父母中定义的属性在子pom中不可用

时间:2018-01-23 14:00:55

标签: maven maven-3

我们开发的两个应用程序的结构

  -
  ----- app_one
          -
          --- pom.xml (aggregator pom to build all modules part of the app)
          -
          --- app_one_version_module
                -
                --- pom.xml (parent module defining the app version)
                -
          --- module_one
          --- module_two
 -
 ----- app_two
         -
         --- pom.xml (aggregator pom to build all modules part of the app)
         -
         --- app_two_version_module
               -
               --- pom.xml (parent module defining the app version)
               -
         --- module_three
         --- module_four

父项目和个别项目poms对于项目1看起来如下。

parent pom.xml
--------------
<properties>
  <appone.version>2.0-SNAPSHOT</appone.version>
</properties>

module_one pom.xml
------------------
<parent>
  <version>${appone.version}</version>
  <relativePath>../.</relativePath>
</parent>

module_two pom.xml
------------------
<dependencies>
    <dependency>
       <artifactId>module_one</artifactId>
       <version>${appone.version}</version>
    </dependency>
</dependencies>

<parent>
  <version>${appone.version}</version>
  <relativePath>../.</relativePath>
</parent>

App2也以类似的方式组织。

在个别应用中,所有模块都具有相同的版本。因此,module_onemodule_two将具有相同的版本,module_threemodule_four将具有相同的版本。

module_three必须依赖module_two时出现问题。 假设app_one在版本2.0-SNAPSHOT是最新的,而app_two是版本3.1-SNAPSHOT

module_three pom.xml
--------------------
<properties>
  <otherapp.version>2.0-SNAPSHOT</otherapp.version>
</properties>

<dependencies>
    <dependency>
       <artifactId>module_two</artifactId>
       <version>${otherapp.version}</version>
    </dependency>
</dependencies>

当我尝试构建app_two时,maven会在版本module_two标识它需要2.0-SNAPSHOT来构建module_three。但是,它无法在<version>${appone.version}</version>的pom.xml中评估/插入表达式module_two。所以,构建失败了。正如我们在代码段中看到的,属性appone.version在app_one的父pom中定义,module_two具有正确的父标记定义。 如果我尝试自己构建app_one,它就会成功构建。

我无法理解这里出了什么问题。感谢帮助。

0 个答案:

没有答案