Структура Maven и JSF webapp, где именно для размещения ресурсов JSF

Я действительно не понимаю структуру каталогов с Maven и JSF webapp.

Когда я создаю проект, у меня есть эта структура:

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

Я хочу добавить некоторые ресурсы:

  • Файл javascript
  • css файл
  • изображения
  • i18n файлы

Я могу включить файлы i18n внутри src/main/resources, но не в любом месте, и я могу включить JS файл, файл CSS и изображения внутри src/main/webapp/resources, но не где-нибудь...

Я не нашел очень четких правил в Интернете о структуре каталогов с JSF и Maven.

Каковы правила, пожалуйста?

Спасибо

Ответ 1

Ресурсы JSF, на которые должны ссылаться <h:outputStylesheet>, <h:outputScript> и <h:graphicImage> (таким образом, CSS/JS/images), должны попадать в папку /resources публичного webcontent, где /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
      :                   

См. также:

Ответ 2

Лучшее место для 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/ресурсов, и вы можете контролировать фильтрацию и замену