2011-11-30 96 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文件中使它們語法錯誤(因爲字符$)
相關問題