Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Maven中验证属性文件集_Maven - Fatal编程技术网

如何在Maven中验证属性文件集

如何在Maven中验证属性文件集,maven,Maven,我想我有一个相当普遍的问题,我希望Maven能够解决,但我找不到合适的插件 背景 像大多数规模合理的项目一样,我需要在几个不同的环境中部署我的应用程序。比如说,它们被称为“开发”、“质量保证”和“生产”。在这些环境中,我的应用程序将与不同的后端服务器通信,并将其数据保存到不同的数据库。我将为每个环境创建一个Java属性文件,并在应用程序中部署正确的属性文件,而不是硬编码应用程序中的所有设置。在我的源代码中,将类似于: <root> |-- conf | |--de

我想我有一个相当普遍的问题,我希望Maven能够解决,但我找不到合适的插件

背景

像大多数规模合理的项目一样,我需要在几个不同的环境中部署我的应用程序。比如说,它们被称为“开发”、“质量保证”和“生产”。在这些环境中,我的应用程序将与不同的后端服务器通信,并将其数据保存到不同的数据库。我将为每个环境创建一个Java属性文件,并在应用程序中部署正确的属性文件,而不是硬编码应用程序中的所有设置。在我的源代码中,将类似于:

<root>
   |-- conf
   |     |--develop
   |     |    \-- application.properties
   |     |--qa
   |     |    \-- application.properties
   |     \--production
   |         \-- application.properties
   \-- pom.xml 

|--形态
||——发展
|| \--application.properties
||--qa
|| \--application.properties
|\--生产
|\--application.properties
\--pom.xml
问题

如果开发人员正在向项目中添加新的设置,那么很容易更新
conf\development\application.properties
文件,但忘记了更新其他文件。如果缺少该设置,这通常会导致运行时出错,这在生产服务器上可能是灾难性的

问题

是否有Maven插件可用于确保application.properties的所有三个版本都包含完全相同的密钥集。如果任何文件中缺少一个(或多个)密钥,则生成应失败。

我:

  • 使用,例如
    文件

    有关如何实现多值参数的示例,请参见

  • 读取三个
    .properties
    文件并填充
    映射
    (其中:
    字符串键
    整数计数

  • 如果任何
    整数
    不等于最后给出的文件数,抛出
    org.apache.maven.plugin.MojoFailureException
    。如果其中一个值无效,例如为空或语法错误,则同样适用


我将插件的目标绑定到
生成资源
阶段。

总而言之,您需要验证所有3个
应用程序属性
是否具有相同的键。您还想验证它们是否有特定的键吗?最简单的解决方案是编写一个单元测试来处理这个问题…@Tunaki我已经更新了这个问题,让它更清楚一些,但是是的-我想验证每个属性文件是否包含完全相同的键集。如果缺少任何一个键,构建就会失败,因为它们都很重要。遗憾的是,我认为这可能是最好的解决方案。我原以为这是一个足够频繁的要求,但我猜我错了。谢谢