我们开发的两个应用程序的结构
- ----- 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_one
和module_two
将具有相同的版本,module_three
和module_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,它就会成功构建。
我无法理解这里出了什么问题。感谢帮助。