【发布时间】:2011-04-10 17:23:14
【问题描述】:
http://maven.apache.org/pom.html#Properties 表示属性“可以在 POM 中的任何位置访问值”。
是否应该读作“在 POM 中的大多数地方都可以访问”?
我可以像这样指定依赖的版本没问题:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
但是项目本身的版本是这样的:
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>${myversion}</version>
<properties>
<myversion>8</myversion>
</properties>
<modules>
<module>alpha</module>
<module>beta</module>
</modules>
...
如果我尝试这个 如果其中一个模块使用硬编码的版本号指定其父模块,如下所示: 当我尝试构建时,当 maven 来查看模块的 pom 时,它会说它找不到版本 8 的给定父 pom。 但是,如果我也将父版本中的版本硬编码为 8,而不是使用 ${myversion},那么一切正常。 所以在我看来似乎父 pom 的 /project/version 标记不会发生属性替换。 是这种情况还是对我所看到的情况有其他解释? 问候, /乔治<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>8</version>
</parent>
【问题讨论】:
标签: maven-2 properties substitution pom.xml