我认为我预计Maven会解决一个相当普遍的问题,但我无法找到合适的插件......
背景
与大多数合理规模的项目一样,我需要在几个不同的环境中部署我的应用程序。让他们说他们被称为"开发"," qa"和"生产"。在每个环境中,我的应用程序将与不同的后端服务器通信,并将其数据保存到不同的数据库。而不是硬编码我的应用程序中的所有设置我将为每个环境创建一个Java属性文件,并且只是在应用程序中部署正确的文件。在我的源代码中将看起来像:
<root>
|-- conf
| |--develop
| | \-- application.properties
| |--qa
| | \-- application.properties
| \--production
| \-- application.properties
\-- pom.xml
问题
如果开发人员正在向项目添加新设置,则更新conf\development\application.properties
文件太容易,但忘记更新其他文件。如果缺少该设置,则通常会导致运行时出错,这在生产服务器上可能是灾难性的。
问题
是否有可用于确保所有三个版本的application.properties包含完全相同的密钥集的Maven插件。如果任何文件中缺少一个(或多个)密钥,则构建应该失败。
答案 0 :(得分:1)
appropriate parameter,例如files
。
有关如何实施多个值参数的示例,请参阅this answer。
读取三个.properties
文件并填写Map<String, Integer>
(其中:String key
,Integer count
)。
如果Integer
中的任何一个不等于最后给出的文件数,则抛出org.apache.maven.plugin.MojoFailureException
。如果其中一个值无效,则同样适用,例如,空的或在语法上错误的。
我将插件的目标绑定到generate-resources
阶段。