Maven 和 JSF webapp 结构,确切地在哪里放置 JSF 资源



我不太了解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目录结构的非常明确的规则。

请问有什么规则?

谢谢

<h:outputStylesheet>

<h:outputScript><h:graphicImage>(因此,CSS/JS/images)引用的JSF资源应该最终放在公共Web内容/resources文件夹中,/WEB-INF/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
      :                   

另请参阅:

  • 如何在小面模板中引用 CSS/JS/图像资源?
  • JSF 资源库的用途是什么,应该如何使用它?

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

最新更新