【问题标题】:Using maven to create a .war file, how can I use my production resources?使用 maven 创建 .war 文件,如何使用我的生产资源?
【发布时间】:2013-04-21 14:28:25
【问题描述】:

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

mvn clean package

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

当我推送到生产环境并运行时:

java -jar ...

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

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

【问题讨论】:

标签: java spring maven spring-mvc


【解决方案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>

【讨论】:

    【解决方案2】:

    这里有几个选项。第一个(正如其他人也提到的)是使用 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 对此很有帮助。例如,在开发模式下,您可以查找名为 &lt;user-home&gt;/mypropertiesoverride.properties 的属性文件,该文件可用于用开发特定的属性覆盖任何生产值属性。

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

    【讨论】:

    • 它不仅限于 .properties 文件,我也有基于 json 的配置文件。
    • 我只是在这里使用属性作为示例。它可以是任何类型的资源文件。
    • 使用profile就像写两个不同的独立pom文件。如果你可以使用两个不同的 pom 来做某事,那么你可以使用配置文件来实现同样的效果......
    • 谢谢,我也可以这样做吗,在生产战争构建期间以某种方式删除所有配置/属性文件,然后在部署中我可以在部署期间将这些文件添加到文件夹中,然后添加该文件夹到我的类路径?
    • 虽然我不确定您在答案中的一些建议所面临的确切问题,但特定的想法听起来有点过于复杂......
    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2016-07-18
    • 2017-11-02
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多