在兄弟模块之间共享动态生成的属性

时间:2012-01-03 23:56:02

标签: java maven pom.xml

我正在尝试创建一个Maven插件,用于在面向服务的体系结构中独立运行测试。给定项目布局如:

Service
|- webapp
|- int-test

我想:

  1. 通过调用可配置的“属性供应商”动态生成属性值。一个这样的房地产供应商可能会呼叫一个Web服务来获取一个未使用的帐户ID,在该ID下将测试数据将被暂存。
  2. 将这些值替换为webapp和int-test模块的属性文件。
  3. 启动webapp
  4. 运行测试。
  5. 我认为最好的方法是将插件的配置添加到父POM,然后用户可以简单地检查项目,cd进入父pom的目​​录并执行插件的目标来运行测试本地运行的服务。

    我不太确定如何执行上面的第2步。理想情况下,我宁愿不让插件更改int-test/src/test/resourceswebapp/src/main/config中的属性文件,因为人们可能会错误地检查这些更改。我宁愿这些替换只出现在各自的target/目录中。

    我已经看到过滤可以用来解决类似的问题,但我还没有看到任何涉及在模块之间共享动态生成属性的解决方案。

    我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您可以构建自定义maven构建扩展并从cetntral服务动态检索这些属性,并在构建过程开始后立即将它们注入内存中的POM。确实,这就是我们在公司设置中解决这个问题的方法。

我刚发布了一份完整的食谱to this Stackoverflow answer