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>
...
Если я попробую это не примет значение 8. Здесь я определил $ {myversion} в pom, но, похоже, то же самое имеет место, если я укажу -Dmyversion = 8 в командной строке.
Если одинмодуля указывает его родителя с жестко запрограммированным номером версии, например, так:
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>8</version>
</parent>
Когда я пытаюсь собрать потом, когда maven приходит посмотреть на модуль pom, он скажет, что не может найти данный родительский pom с версией8.
Однако если я жестко закодирую версию в родительском 8, а не с помощью $ {myversion}, то все работает нормально.
Так что кажется вмне, что замена свойства не происходит для / project / version tag родительского пом.
Это тот случай или есть какое-то другое объяснение того, что я, похоже, вижу?
С уважением,
/ Джордж