2011-11-30 99 views
2

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

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

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

这是个好主意吗?

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

如果否:解决此问题有什么更好的办法?

回答

4

我取得了类似的结果,但在pom.xml中使用了变量,而不是在propreties文件中。所以我的属性文件有一些变量,这些变量在包装中会被Maven改变。

首先我在POM的轮廓部分定义了这些瓦尔:

<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> 

然后激活行家处理。第和资源的过滤。所以在你的编译部分:

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

最后我可以在我的属性文件,配置文件中有“vars”。 例如,在我的项目中,我有一个email.properties文件用于配置发送电子邮件。属性“sendEmail”指示是否必须发送电子邮件(prod配置文件)或在调试(dev配置文件)中打印它。使用dev配置文件,这个变量将被置于false,而使用配置文件prod,属性将具有真实值。

sendEmail=${props.email} 

这不仅符合性文件工作,也与XML(我想每文本文件)

反政府是:配置的

  • 一部分沿POM分散文件
  • Maven包装持续更多(因为过滤)
  • 将变量放在XML文件中使它们语法错误(因为字符$)
相关问题