0

我用它来构建我的 spring mvc 应用程序:

mvn clean package

我使用 Maven 战争插件来创建一个战争文件,但我面临的问题是,在我的资源文件夹中,我有我的 .properties 文件的开发版本,用于 log4j 等。

当我推动生产并运行时:

java -jar ...

它分解了 war 文件,然后我可以使用我的生产设置修改 .properties 文件,但我显然想在我的 maven 构建期间执行此操作以进行生产。

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

4

2 回答 2

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>
于 2013-04-21T14:41:40.097 回答
0

这里有几个选项。第一个(正如其他人也提到的)是使用 Maven 配置文件。而不是拥有多个版本的属性文件,您将拥有以下内容:

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

然后在您的配置文件中,您可以定义这些属性的值(确保您启用了资源过滤以使其正常工作。请参阅示例http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-配置文件和资源过滤)。

您还可以让您的属性文件在其中包含生产值,但能够在开发中覆盖这些文件。弹簧配置文件对此很有帮助。例如,在开发模式下,您可以查找名为 的属性文件<user-home>/mypropertiesoverride.properties,该文件可用于用开发特定的属性覆盖任何生产值属性。

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

于 2013-04-21T14:46:26.200 回答