我正在使用不同的maven配置文件将我的应用程序部署到不同的环境。 (使用weblogic-maven-plugin,但我认为这并不重要)
在我使用Spring Web Services的应用程序中。现在我想根据环境更改端点。 (端点在Spring的applicationContext.xml中定义)
我的想法是从属性文件中读取值。在Mavens包阶段期间将写入(或复制)此属性文件。
这是个好主意吗?
如果是:如何使用maven创建此属性(或整个文件)。
如果不是:什么是更好的方法来解决这个问题?
答案 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(我猜每个文本文件)
对比是: