【问题标题】:Maven and JSF webapp structure, where exactly to put JSF resourcesMaven和JSF webapp结构,JSF资源到底放哪里
【发布时间】:2012-11-12 12:23:54
【问题描述】:

我不太了解 Maven 和 JSF webapp 的目录结构。

当我生成项目时,我有这个结构:

src
|_ main
   |_ java
   |_ resources
   |_ webapp
      |_ WEB-INF 
         |_ web.xml
      |_ index.xhtml

我想包含一些资源:

  • javascript 文件
  • css 文件
  • 图片
  • i18n 文件

我可以在 src/main/resources 中包含 i18n 文件,但不能在任何地方,我可以在 src/main/webapp/resources 中包含 JS 文件、CSS 文件和图像,但不能在任何地方...

我在网上没有找到关于 JSF 和 Maven 目录结构的非常明确的规则。

请问有什么规则?

谢谢

【问题讨论】:

  • 您使用 JSF 的事实并不是很相关,最终结果将是一个标准的 WAR - 其中 webapp 的内容将是根(因此 webapp 的内容不包括 WEB -INF 是网络树)。所以,也许从 Maven WAR plugin doc 和 the basic structure of a WAR file 开始
  • 感谢您的指导性链接

标签: jsf maven


【解决方案1】:

css/images 等的最佳位置在 src/main/webapp/images 或 src/main/webapp/css/ 等。目前没有位置 src/main/webapp/resources。 src/main/resources 文件夹用于存放应过滤或应位于 WEB-INF/classes 文件夹中的资源(属性文件等)。所以通常你不喜欢过滤图像和 css 文件。查看maven-war-plugin 文档,该文档提供了一些提示和配置示例。 最好的方法似乎是将所有内容放入 src/main/webapp/FOLDER 中,无论如何都不应该对其进行过滤,否则您应该将其放入 src/main/resources 并且您可以控制过滤和替换

【讨论】:

  • 谢谢,但是当我将图片、css和js文件放入webapp文件夹时,我只能访问图片而不是js和css文件。当然,这是因为我使用了 h:outputStylesheet 和 h:outputScript。我会寻找这个标签来很好地理解为什么。
【解决方案2】:

<h:outputStylesheet>、<h:outputScript> 和 <h:graphicImage>(因此,CSS/JS/images)要引用的 JSF 资源最终应位于公共 Web 内容的 /resources 文件夹中,其中 @987654327 @ 和 /META-INF 文件夹也是。

因此,您必须将它们放入/src/main/webapp/resources。

src
 `-- main
      |-- java
      |-- resources
      `-- webapp
           |-- resources
           |    |-- css
           |    |    `-- style.css
           |    |-- images
           |    |    `-- logo.png
           |    `-- js
           |         `-- script.js
           |-- WEB-INF 
           |    `-- web.xml
           `-- index.xhtml

那些 i18n 文件(我假设您在技术上是指资源包文件)最终必须在 /WEB-INF/classes 的包中结束。 /src/main/resources 用于非类文件,这些文件应该以/WEB-INF/classes 结尾,你应该把它们放在那里。假设捆绑包的基本名称为 com.example.i18n.text,请按如下方式提供:

src
 `-- main
      |-- java
      |-- resources
      |    `-- com
      |         `-- example
      |              `-- i18n
      |                   |-- text.properties
      |                   |-- text_en.properties
      |                   |-- text_es.properties
      |                   `-- text_nl.properties
      :                   

另见:

【讨论】:

  • 这正是一切正常的配置,但我不明白为什么。完毕 !非常感谢
  • 不客气。我认为最大的混淆来源是“资源”文件夹的命名约定相同,并且每个文件夹的用途完全不同。
  • 是的。此外,这是我第一次使用 JSF webapp 和 Maven
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 2013-05-30
  • 2013-09-11
  • 2012-03-20
  • 2022-01-17
  • 2011-05-23
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多