我们有一个多模块的Maven项目,需要在不同平台上运行,例如JBoss 4和JBoss 7。我们通过指定
在这些配置文件中,我们会指定所提供依赖的版本。例如,我们会导入jboss父级pom:
platform
属性,并将其用作构件分类器以及子模块中特定于平台的配置文件的激活来实现。例如:<activation>
<property>
<name>platform</name>
<value>jboss71x</value>
</property>
</activation>
在这些配置文件中,我们会指定所提供依赖的版本。例如,我们会导入jboss父级pom:
<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
),它可以正常工作。
但是当属性在根pom.xml的<properties>
部分中设置时(我还尝试在父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中指定此属性值,而不是在命令行中指定?