使用maven创建.war文件,如何使用我的生产资源?

时间:2013-04-21 14:28:26

标签: java spring maven spring-mvc

我用它来构建我的spring mvc app:

mvn clean package

我使用maven war插件创建一个war文件,但我遇到的问题是在我的资源文件夹中我有我的.properties文件的开发版本,用于log4j等。

当我推进生产并运行时:

java -jar ...

它爆炸了war文件,然后在那时我可以使用我的生产设置修改.properties文件,但我显然想在我的maven构建中进行生产。

有没有办法告诉maven这是一个生产版本,所以从其他地方获取这些文件?在开发过程中,继续做它现在正在做的事情?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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的属性文件,该文件可用于覆盖具有特定开发属性的任何生产值属性。

我更喜欢这里的第二种方法,你有一个默认属性文件,然后你可以覆盖选择属性。