【问题标题】:Files under src/main/resources goes under target/WEB-INF/classessrc/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文件夹下吗?
  • resourcesclasspath 资源。一切都放入WEB-INF/classes。这些与 remote 资源不同 - 它应该位于 webapp outside of WEB-INF。 Maven 正在做它应该做的事。
  • 不,它们应该在 src/main/webapp/ 或此路径的子文件夹中。
  • 嗯.. 谢谢你们俩。我是 Java 新手,这似乎是错误的,所以我想我应该问一下。那么 src/main/resources 下的文件是供 spring 用作资源文件的吗?就像,如果我决定使用 @Value 注释调用资源属性,那么该资源文件应该在该目录中,对吗?

标签: java maven spring-mvc


【解决方案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”类的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-30
      • 2012-05-06
      • 2015-03-22
      • 1970-01-01
      • 2021-04-23
      • 2020-11-01
      • 2014-03-31
      • 2015-02-26
      相关资源
      最近更新 更多