2013-04-21 98 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

相关问题