У нас есть многомодульный проект maven, и он может работать на разных платформах, таких как JBoss 4 и JBoss 7. Мы указываем свойство platform
, а затем используем его в качестве классификатора для артефактов и для активации профиля для конкретной платформы. в подмодулях, например:
<activation>
<property>
<name>platform</name>
<value>jboss71x</value>
</property>
</activation>
в этих профилях мы в том числе указываем версии предоставляемых зависимостей. Например. мы делаем импорт родительского pom jboss:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-parent</artifactId>
<version>${dependencies.jbossas7.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Поэтому, когда мы указываем свойство в качестве аргумента командной строки (-Dplatform=jboss71x
), все работает нормально.
Но когда свойство установлено в разделе <properties>
в корневом pom.xml (я также пытался установить его в родительском pom), похоже, что версии из родительского pom пропущены:
[ERROR] 'dependencies.dependency.version' for commons-lang:commons-lang:jar is missing. @ line 46, column 21
[ERROR] 'dependencies.dependency.version' for commons-beanutils:commons-beanutils:jar is missing. @ line 56, column 21
[ERROR] 'dependencies.dependency.version' for commons-collections:commons-collections:jar is missing. @ line 61, column 21
Последняя версия maven: 3.2.1.
Почему это происходит, и как мы можем указать значение этого свойства в pom.xml, а не в командной строке?