我可以将Maven中的属性(在settings.xml中定义的密码)注入到我的Spring容器中吗?
我通过我在〜/ .m2 / settings.xml中定义的属性(可能在任何地方,包括pom.xml)为我的部署插件定义服务器的密码。 我想在集成测试中使用相同的属性。 有办法吗?
如果没有,是否有方便的方式在Maven和TestNG之间共享属性?
我想编写一个可以在不同的持续集成服务器上运行的不错的测试套件,指向不同的远程主机(开发,测试,登台和生产),而无需修改代码。
我在settings.xml中为远程服务定义凭据:
http://my.company.com my-un my-pw
我希望能够使用以下方法引用我的单元/集成测试(src / test / resources)中的属性:
<beans....
这样做有什么选择吗? 有没有其他人尝过这个? 我正在编写很多REST测试,需要在我的测试中进行授权。
谢谢!
当然。 Maven资源过滤是可行的方法。
这是一个示例配置(匹配*-context.xml
文件将被过滤,其他文件将不被过滤):
src/main/resources true **/*-context.xml src/main/resources false **/*-context.xml
另一种方法是使用Properties Maven插件 将所有项目属性写入文件,并使用PropertyPlaceholderConfigurer
机制从Spring引用该文件。
Maven配置:
org.codehaus.mojo properties-maven-plugin 1.0-alpha-2 generate-test-resources write-project-properties ${project.build.testOutputDirectory}/mavenproject.properties
弹簧配置:
好吧,@ seanizer是在正确的轨道,但这可以简化,因为你已经可以在maven中设置你的属性。 将它们设置在您的pom和Spring配置中,您只需要访问它们,所以只需更改您的配置就可以实现这一点。
由于您感兴趣的属性现在由maven设置为系统属性,因此不需要该位置。 PropertyPlaceholderConfigurer将使用这些以及文件中定义的任何内容,在此特定情况下不需要。 请注意,您必须包含上下文的架构。
我会将它们从您当前的位置移开,因为这是一个全局设置,您的pom是项目特定的,所以我认为这是它所属的地方。
当maven使用特定的配置文件构建项目时,您可以让Maven将特定值替换为您的xml文件。 因此,例如,您将在maven pom中设置测试prfile,当您使用该配置文件构建时,jar中的xml文件将具有所需的属性。 看一下这个例子吧。