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