Maven变量不会替换为已安装的pom文件

时间:2012-01-27 22:35:46

标签: maven maven-3

我们使用Maven(3.0.3)作为构建工具,我们需要为不同的环境(DEV,TEST,QA)提供不同的版本。如果我们在构建期间根据环境传递版本属性值,则安装的POM没有传递的属性值,而是仍然具有$ {app-version}字符串。

我已经看到此http://jira.codehaus.org/browse/MNG-2971

存在错误

还有其他选择,因为我们不能为不同的环境提供不同的POM文件,这将很难维护。

由于 维杰

3 个答案:

答案 0 :(得分:0)

为环境创建不同的工件,并将参数用作分类器。所有三个工件的pom都是相同的,但分类器将它们分开。

答案 1 :(得分:0)

显然,Maven在安装POM时不会进行任何变量/属性替换。它按原样安装,这就是原理。你最好不要从POM读取任何属性(除非这是例如版本号),你应该在外部文件中配置你的属性(每个阶段一个,例如dev.propertiestest.properties,...)然后配置Maven配置文件(再次,每个阶段一个)并根据您要构建的内容调用Maven,如mvn -Pdev。在个人资料中,您可以使用您喜欢的任何属性打包最终应用程序(例如,在build-helper-maven-plugin:add-resourcemaven-antrun-plugin +复制规则的帮助下)。

或者你可以filter your resources。例如,您可以过滤Spring上下文XML文件,该文件引用属性文件(因此您打包所有属性文件,但Spring仅引用某些特定文件)。或者,您可以过滤另一个属性文件,从中您将了解要使用的“主要”属性文件(双重间接)。

答案 2 :(得分:0)

您应该为不同的targets within a single build创建存档,并使用已经提到的分类器将这些工件与其他工件分开。