src/main/resources 下的文件位于 target/WEB-INF/classes 下
Posted
技术标签:
【中文标题】src/main/resources 下的文件位于 target/WEB-INF/classes 下【英文标题】:Files under src/main/resources goes under target/WEB-INF/classes-s-rc/main/resources 下的文件位于 target/WEB-INF/classes 下 【发布时间】:2015-06-18 04:10:01 【问题描述】:该项目是一个带有 Maven 的 Spring MVC。
这是示例文件夹结构:
src/main/java src/main/资源 CSS 字体 图片 js messages_en.properties src/main/webapp WEB-INF 观看次数 application-context.xml web.xml这里是有效 pom 的构建部分
<sourceDirectory>$basedir\src\main\java</sourceDirectory>
<scriptSourceDirectory>$basedir\src\main\scripts</scriptSourceDirectory>
<outputDirectory>$basedir\target\classes</outputDirectory>
<resources>
<resource>
<directory>$basedir\src\main\resources</directory>
</resource>
</resources>
<directory>$basedir\target</directory>
<finalName>m2mproject</finalName>
而目标目录是这样出来的
WEB-INF 类 com.... 图片 字体 js CSS messages_en.properties 库 观看次数 应用程序上下文.xml web.xml为什么maven把所有的资源都放在classes文件夹下?我的文件夹结构错了吗?
【问题讨论】:
这完全正确。你有问题吗? 图片、字体和js文件夹应该在classes文件夹下吗? resources 是 classpath 资源。一切都放入WEB-INF/classes
。这些与 remote 资源不同 - 它应该位于 webapp
outside of WEB-INF
。 Maven 正在做它应该做的事。
不,它们应该在 src/main/webapp/ 或此路径的子文件夹中。
嗯.. 谢谢你们俩。我是 Java 新手,这似乎是错误的,所以我想我应该问一下。那么 src/main/resources 下的文件是供 spring 用作资源文件的吗?就像,如果我决定使用 @Value 注释调用资源属性,那么该资源文件应该在该目录中,对吗?
【参考方案1】:
让我们简单解释一下 maven 行为
放在 src/main/resources 中的东西应该可以从类路径访问。因此,如果是 Web 应用程序,它将被放在 WEB-INF/classes 中
放在 src/main/webapp 中的东西将被复制到 web 应用程序根目录中
【讨论】:
【参考方案2】:Maven 做得对,但是 因为你使用的是spring MVC,所以你的资源应该是静态资源,应该放在
主/webapp/资源
而您的网页将在下面
main/webapp/WEB-INF/views
并且应该包含 .html 或 .jsp 页面
现在 main/resources 用于配置文件,例如 persistence.xml 或 faces 属性以及任何其他将用于“java”类的文件。
【讨论】:
以上是关于src/main/resources 下的文件位于 target/WEB-INF/classes 下的主要内容,如果未能解决你的问题,请参考以下文章
java.io.FileNotFoundException:类路径资源即使文件存在于 src/main/resources
Eclipse中src/main/resources配置文件启动问题
Java maven项目编译漏掉src/main/java下的xml配置文件
maven的src/test/resources中的配置文件怎样读取?
myeclipse部署maven项目到tomcat,src/main/resources里面配置文件部署不到webapp下classes