如何从引用java项目访问静态资源(WEB-INF)文件夹中的文件?
作者:互联网
我有一个Web应用程序,其中包含我的一个应用程序服务的配置xml文件,该文件作为spring bean公开.
此外,我在同一个工作区中有一个独立的Java应用程序(它从其pom.xml引用我的Web应用程序项目),它使用Spring TestContext框架运行测试,其中一个测试检查该XML文件的配置.
但是我从独立应用程序访问此xml文件时遇到问题:
在设置测试之前,在我之前的配置中,该文件是通过ServletContext访问的,位于WEB-INF /文件夹中.但是,为了使其可以从测试项目访问,我必须将其移动到源/文件夹并使用getClassLoader().getResourceAsStream()方法加载它而不是ServletContext.但它会使编辑文件变得很麻烦,因为每次都需要重新部署应用程序.
是否可以将文件保存在WEB-INF /文件夹中,但在测试运行期间从引用项目中加载它?
附:目前它是一个带有Tomcat服务器的STS项目.
解决方法:
绝对将文件保存在WEB-INF /文件夹下,如果它应该存在的位置.
对于从命令行执行的测试类.您可以在您知道位于类路径根目录中的文件(例如application.properties文件)上使用getClassLoader().getResource().从那里你知道项目的结构以及在哪里找到WEB-INF /相对于属性文件.由于它返回一个URL,您可以使用它来确定您正在寻找的XML文件的路径.
URL url = this.getClass().getClassLoader().getResource("application.properties");
System.out.println(url.getPath());
File file = new File(url.getFile());
System.out.println(file);
// now use the Files' path to obtain references to your WEB-INF folder
希望你觉得这很有用.我不得不对你的测试类如何运行等做出假设.
看看File Class,它是可能对你有用的getPath(),getAbsolutePath()和getParent()方法.
标签:java,spring,maven,java-ee,pom-xml 来源: https://codeday.me/bug/20191009/1877119.html