我有一个使用Maven配置的Java Spring项目。由于单元测试及其配置文件的数量快速增加,因此我试图将测试配置集中到一个属性文件(与构建项目时使用的文件相同)。为属性文件指定Java路径
单元测试位于(相对于项目的路径,当然)在树
src/test/java/com (...)
这些测试的资源文件在
src/test/resources(...)
最后,属性文件,其中的资源文件应该读,是在目录
src/main/filters
现在,我有一个JUnit类在那里我指定这样的配置文件位置:
@ContextConfiguration(locations = { "classpath:com/initrode/quartz/SyncManagerJobTest-context.xml"})
在配置文件SyncManagerJobTest-context.xml中有一行
<context:property-placeholder location="/src/main/filters/deploy.local.properties"/>
这导致在属性文件中被从目录中读取。我想阅读的是属性文件,位于src/main/filters下。我尝试使用../../向上遍历目录,但这没有帮助。使用classpath:也没有解决。我可以使用“file:”的绝对路径,但这需要项目中的每个开发人员修改配置,这也不是很好。总之,问题是:如何强制src/test/resources /中的配置文件读取src/main/filters中的属性文件?
还有一个相关的奖励问题:在Java环境中处理文件时,除了“file:”和“classpath:”之外是否还有其他修饰符?
属性文件的位置可能不是最好的,但我工作的一个现有的项目,我就离开它是.. 我们有三种不同的属性适用于不同的生产环境。在开发应用程序时,有很多属性需要配置,db,ldap等等。拥有两个资源位置意味着必须维护两个属性文件,我认为这并不理想。 感谢您的链接,我会检查他们。 – simon 2009-09-29 11:22:18
我不确定要了解“有两个资源位置”是什么意思,而且这也不是要求。但是,如果你有不同的生产环境,你不必为每个环境管理不同的环境吗?这就是这些链接(以maven的方式)。 – 2009-09-29 12:18:13
@Pascal这是一个好点(+1),但从问题的其他部分我认为OP可能并不意味着Maven意义上的过滤器。所以文件应该放在src/main/resources中。在处理现有的项目结构时,虽然这可能不可行,因此我的解决方法 – 2009-09-29 12:22:29