2012-01-03 94 views
1

我试图创建一个Maven插件,用于在面向服务的体系结构中独立运行测试。给定一个项目布局,如:在兄弟模块之间共享动态生成的属性

Service 
|- webapp 
|- int-test 

我想:

  1. 通过呼唤配置“属性供应商”动态生成的属性值。一个这样的房产供应商可能会呼叫Web服务以获取未使用的账户ID,根据该账户ID进行测试数据的分级。
  2. 将这些值替换为webapp和int-test模块的属性文件。
  3. 启动web应用程序
  4. 运行测试。

我认为这样做将是插件的配置添加到父POM的最佳方式,然后用户可以简单地签出项目,cd到父POM的目录和执行该插件的目标运行针对本地运行的服务进行的测试。

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

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

任何建议将不胜感激。

+0

怎么样,写你的动态生成文件属性文件。然后使用maven属性插件[1]读取属性。然后根据这些属性运行过滤[2]。 (AFAIU,我们可以给maven属性作为过滤变量) [1] http://haroon.sis.utoronto.ca/zarar/properties-maven-plugin/index.html [2] http:// maven。 apache.org/plugins/maven-resources-plugin/examples/filter.html – 2012-01-04 04:40:10

+0

问题是,这些属性需要在父级POM级别读取,然后过滤到子项目的属性文件中。 – 2012-01-04 15:07:31

回答

0

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

我刚刚发布了一个完整的配方to this Stackoverflow answer