Maven:不同配置文件的不同属性文件

时间:2011-11-30 11:41:31

标签: java maven-2

我正在使用不同的maven配置文件将我的应用程序部署到不同的环境。 (使用weblogic-maven-plugin,但我认为这并不重要)

在我使用Spring Web Services的应用程序中。现在我想根据环境更改端点。 (端点在Spring的applicationContext.xml中定义)

我的想法是从属性文件中读取值。在Mavens包阶段期间将写入(或复制)此属性文件。

这是个好主意吗?

如果是:如何使用maven创建此属性(或整个文件)。

如果不是:什么是更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:6)

我实现了类似的功能,但将pom.xml中的变量改为propreties文件。因此,我的属性文件包含Maven在打包时可以更改的变量。

首先,我在pom的profiles部分中定义了这些变量:

<profiles>
    <profile>
        <id>dev</id>
        <activation><activeByDefault>true</activeByDefault></activation>
        <properties>
            <props.debug>true</props.debug>
            <props.email>false</props.email>
                            <what.ever.you.want>value for dev profile</what.ever.you.want>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <props.debug>false</props.debug>
            <props.email>true</props.email>
            <what.ever.you.want>value for prod profile</what.ever.you.want>
        </properties>
    </profile>
</profiles>

然后激活maven处理和资源过滤。所以在你的构建部分:

        <build>
                    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources>
             </build>

最后,我的属性文件,配置文件中可以包含“vars”。 例如,在我的项目中,我有一个email.properties文件,用于配置发送的电子邮件。属性“sendEmail”表示我是否必须发送电子邮件(prod配置文件)或在debug(dev配置文件)中打印它。使用dev配置文件时,var将被置为false,而使用profile prod时,属性将具有真值。

sendEmail=${props.email}

这不仅适用于属性文件,也适用于XML(我猜每个文本文件)

对比是:

  • 部分配置分散在pom文件中
  • Maven包装持续时间更长(因为过滤)
  • 将vars放入XML文件会使它们语法错误(因为字符$)