我编写了一个JUnit测试,用于验证服务针对其XSD返回的xml。我最初将XSD置于src/main/resrouces/xsd/<filename>.xsd
之下但现在我需要将其作为静态资源移到webapp
下,以便在部署应用程序时可以公开访问它。
我宁愿没有两份副本,因为我希望有人迟早会修改错误的副本。
我正在使用getClass().getResource("/xsd/<filename>.xsd")
加载文件,如果资源移到webapp
下,我将如何访问该文件?
答案 0 :(得分:4)
/src/main/webapp
内容放在CLASSPATH上,但在JUnit测试期间(在maven和我的IDE中)都不会。您必须使用以下方法显式加载它们:
new File("src/main/webapp/xsd/<filename>.xsd");
只要项目主目录是运行测试时的当前目录,这应该可以工作。悲伤却又是真的。
答案 1 :(得分:3)
在你的pom中将它添加为资源目录。
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/webapp</directory>
<includes>
<include>xsd/schema.xsd</include>
</includes>
</resource>
</resources>
在java中使用
String path = "/xsd/schema.xsd";
InputStream is = getClass().getResourceAsStream(path);
答案 2 :(得分:0)
您的资源仍将保留在类路径中,因此通常按照现在的方式加载它应该继续工作。