2013-04-21 118 views
0

我使用它來建立我的春​​天MVC應用程序:使用maven創建.war文件,我如何使用我的生產資源?

mvn clean package 

我使用maven戰爭插件來創建一個WAR文件,但我面臨的問題是,在我的資源文件夾,我有我的開發版本,我爲的.properties log4j的等

文件當我推到生產,並運行:

java -jar ... 

它explodeds戰爭的文件,然後在這一點上我可以修改.properties文件與我的生產設置,但我顯然想要這樣做按照我的maven版本生產。

有沒有一種方法,我可以告訴行家,這是一個生產版本,所以從別的地方得到這些文件?在開發過程中,繼續做現在正在做的事情?

+1

看來你指到Maven【簡況】(http://maven.apache.org/guides/introduction/introduction-to-profiles.html)。 – 2013-04-21 14:31:17

回答

1

用戶maven配置文件。 Maven配置文件可幫助您爲不同配置文件指定不同的屬性。所以你可以有兩個配置文件 - 開發和生產。

事情是這樣的 -

<profiles> 
    <profile> 
    <id>development</id> 
    <!-- we'll properties here... --> 
    </profile> 
    <profile> 
    <id>production</id> 
    <!-- ...and here --> 
    </profile> 
</profiles> 

像這個例子 -

<profile> 
    <id>development</id> 
    <properties> 
    <db.driverClass>oracle.jdbc.driver.OracleDriver</db.driverClass> 
    <db.connectionURL>jdbc:oracle:thin:@127.0.0.1:1521:XE</db.connectionURL> 
    </properties> 
</profile> 
<profile> 
    <id>production</id> 
    <properties> 
    <db.driverClass>oracle.jdbc.driver.OracleDriver</db.driverClass> 
    <db.connectionURL>jdbc:oracle:thin:@134.0.0.1:3124:XE</db.connectionURL> 
    </properties> 
</profile> 
0

有幾個選擇這裏。第一個(正如其他人所提到的)是使用maven配置文件。而不是你的屬性文件的多個版本的,你會是這樣的:

mypropsfile.properties 
----------------------- 
prop1=${prop1.val} 
prop2=${prop2.val} 

然後在您的配置文件,您可以爲這些屬性定義的值(請確保您已啓用資源篩選這個工作看的。示例http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-profiles-and-resource-filtering)。

您也可以讓您的屬性文件具有生產值,但可以覆蓋開發中的這些文件。 Spring profiles對此很有幫助。例如,在開發模式下,您可以查找名爲<user-home>/mypropertiesoverride.properties的屬性文件,該文件可用於覆蓋具有開發特定屬性的任何生產值屬性。

我更喜歡第二種方法,在這裏你有一個默認的屬性文件,然後你可以覆蓋選擇屬性。

+0

它不僅限於.properties文件,我也有基於json的配置文件。 – Blankman 2013-04-21 14:49:54

+0

我只是在這裏使用屬性和示例。它可以是任何類型的資源文件。 – 2013-04-21 14:50:45

+0

使用配置文件就像寫兩個不同的獨立pom文件一樣。如果你可以使用兩個不同的poms來做一些事情,那麼你可以使用配置文件來實現同樣的效果... – 2013-04-21 14:58:43

相關問題