我正在开发一个spring项目,我刚刚遇到了在junit中加载XML配置文件的严重问题(但是可以从Web控制器访问它们) - 无法加载XML文件。
我列出了我的类路径(在junit测试中),发现其中包括2个目录:
/var/www/Java/lyricsBase/build/web/WEB-INF/classes/
/var/www/Java/lyricsBase/build/test/classes/
我想在测试中包含一个文件:
并导入以下3个文件:
我可以清楚地看到在tomcat上部署我的项目会将confg文件复制到/var/www/Java/lyricsBase/build/web/WEB-INF/ABC.xml
,但此目录不在类路径中,而是包含/var/www/Java/lyricsBase/build/web/WEB-INF/classes
。我读到WEB-INF不应该在类路径中(它只是一个Java EE原理)。好的 - 那么我应该在哪里放置配置文件以便从Web控制器和junit测试中轻松访问它们?有什么好的做法吗?
答案 0 :(得分:2)
将配置文件放在war包上的WEB-INF / classes下,它们将被加载到类路径中。考虑将代码部署为爆炸式战争,因此可以轻松更改配置文件。
还可以考虑使用maven war项目进行包装。如果这样做,您可以将配置文件放在源代码下的src / main / resources下,然后将它们打包到WEB-INF / classes中。
答案 1 :(得分:1)
我遇到了同样的问题,从那时起开始将它们放在资源下的META-INF中。这是不在Tomcat中运行的spring模板项目放置它们并且似乎解决了我的问题。