我正在Eclipse中编写一个小的Maven应用程序。我将一些属性文件和我的应用程序上下文存储在src/main/resources目录中。
现在我想让Eclipse使用位于src/test/resources目录中的属性。因此,当我在Eclipse中运行和调试程序时,应该使用这些测试属性。
你知道如何实现这个吗?
现在我想让Eclipse使用位于src/test/resources目录中的属性。因此,当我在Eclipse中运行和调试程序时,应该使用这些测试属性。
你知道如何实现这个吗?
请尝试以下方法:
无论您使用Maven Eclipse插件还是m2eclipse,src/test/resources
在类路径上(更准确地说,它们的输出目录)优先于src/main/resources
。换句话说,无需操作,一切都像在命令行上一样正常工作。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- this file need to be imported before other contexts to ensure the test properties take effect -->
<context:property-placeholder location="classpath*:META-INF/spring/testproperties/*.properties"/>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:META-INF/spring/testOverrides.xml","classpath*:META-INF/spring/applicationContext.xml"})
public class SomeTest { ... }
现在将所有测试属性放在src/test/resources/META-INF/spring/testproperties/
中。
您还需要确保main
占位符配置器永远不会看到testproperties
,例如这是我的:
<context:property-placeholder location="classpath*:META-INF/spring/*.properties"/>
它不使用双星号通配符,因此只会查看该目录。
我使用上述方法非常成功。