【问题标题】:Different files to be packaged in a Maven war projectMaven 战争项目中要打包的不同文件
【发布时间】:2011-05-12 03:02:39
【问题描述】:

我有一个war 打包Maven 项目,其中有一个名为myapp.properties 的Java 属性文件。在这个属性文件中,我存储了一些参数,例如,webapp 将使用的数据库连接参数。

  1. 无论是在持续集成环境中还是在我的开发环境中,我都想在 myapp.properties 中设置一些测试参数以连接到我的测试数据库。
  2. 同时,我想在我的最终war包中将这些参数留空,以便用户在部署到他们的环境时可以自己添加这些值。最终的 war 包应该是在持续集成环境中生成的构建工件。

基本上,我想在不同情况下使用两个版本的 myapp.properties 文件。我的问题是,解决这个问题的 Maven 方法是什么?我在我的开发环境中使用了Eclipse + WTP + m2eclipse,我希望这个解决方案可以和我的开发工具一起很好地工作。

【问题讨论】:

    标签: java web-applications maven-2


    【解决方案1】:

    我会试试

    你的项目(或父 pom)的 pom.xml

            <build>
              ...
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
             ...
            </build>
    

    在您的属性文件中,例如

    db.url=${db.url}
    

    在你的 settings.xml 中(见http://maven.apache.org/settings.html#Profiles

    <db.url>jdbc:mysql://localhost:3306/testdb</db.url>
    

    根据您的开发阶段(本地、构建服务器等),您可以使用不同的 db.url 值

    这不会将 db.url 属性留空,但是每次打包工件时,您都不希望它真的保持空白,对吗?

    【讨论】:

    • 这是使用 Maven 的配置文件机制。但是,在我的 CI 环境中,如果测试良好,我需要构建测试战和生产战作为可交付成果。在这种情况下,我似乎无法在同一环境中使用不同的配置文件来区分它们,并且必须为不同的目的构建两个工件?
    • 我不知道您的 CI 环境,但在我们的环境中,我们有不同的测试、生产(集成等)设置。这包括不同的配置文件
    【解决方案2】:

    你可以看看这个博客:http://blog.jayway.com/2010/01/21/one-artifact-with-multiple-configurations-in-maven/

    他们构建不同的战争文件并使用不同的分类器(而不是不同的配置文件)。 我不确定这是否是 maven 方式,但它适用于我的一些项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多