Соглашение об организации файла Webapp (структура разработки)

Для webapps, которые я разрабатываю, я обычно использую следующую организацию файлов, так как я считаю, что она соблюдает соглашение:

src
|-- main
    |-- resources
    |   |-- *.properties
    |   |-- *.xml
    |   |-- spring
    |       |-- applicationContext.xml (main application context config file)
    |-- webapp
        |-- WEB-INF
            |-- spring
            |   |-- spring-mvc.xml (web application context config file, delegated to manage only the web part)
            |   |-- spring-security-http.xml (web security config)
            |-- static
            |   |-- *.css
            |   |-- *.js
            |-- views
            |   |-- *.jsp
            |-- web.xml (deployment configuration)

Что я хотел бы попробовать, так это организовать мои файлы в соответствии со следующей структурой:

src
|-- main
    |-- resources
    |   |-- *.properties
    |   |-- *.xml
    |   |-- web.xml
    |   |-- spring
    |       |-- applicationContext.xml
    |       |-- spring-mvc.xml
    |       |-- spring-security-http.xml
    |-- webapp
        |-- WEB-INF
            |-- static
            |   |-- *.css
            |   |-- *.js
            |-- views
                |-- *.jsp

Конечно, при упаковке webapp файлы будут перемещены там, где они есть (например, файл web.xml в папке WEB-INF). Причина, по которой я хотел бы реорганизовать мои webapps, как указано выше, заключается в том, что мне удобнее иметь все файлы конфигурации *.xml в одном месте, вместо того, чтобы иметь здесь и некоторые там. Разве это плохая идея, по вашему мнению, нарушить мою первоначальную структуру? Если да, то почему? Почему так важно иметь все файлы веб-конфигурации в папке WEB-INF?

PS: технически я знаю, как хорошо соединить все файлы в пути класса Webapp. Вопрос касается скорее соглашения и отзывов от личного/профессионального опыта.

Ответ 1

Вы можете создать веб-проект Java - это некоторая популярная среда IDE, например Eclipse, NetBeans, IntelliJ IDEA, чтобы увидеть типичную структуру веб-приложений Java.

И существует разница между структурой разработки и структурой упаковки.
При разработке приложения вы можете в значительной степени использовать любую структуру, которая вам нравится. Но вы должны упаковывать веб-приложение Java EE в соответствии с конкретными правилами.

Посмотрите официальное учебное пособие по Java EE:
Java EE 7 Tutorial: Packaging
Java EE 6 Tutorial: Приложения для упаковки
Учебник Java EE 6: Пример структуры каталогов (здесь просто игнорируйте информацию, связанную с NetBeans)

Также здесь рекомендуются соглашения для структурирования приложений, разработанных с использованием платформы Java 2, Enterprise Edition (хотя датированы, но могут быть полезны):
Руководства Java Blueprints. Соглашения по проектам для корпоративных приложений

И вот пример из приведенной выше Java BluePrints: Web Applications: Recommended Directory Structure


ОБНОВЛЕНИЕ

Вот пример из одного из моих проектов веб-приложений Java с Spring. Например, я сохранил все связанные файлы конфигурации Spring в специально созданной папке Spring внутри WEB-INF. И в папке Spring я создал больше папок, чтобы лучше организовать мое приложение. Опять же, это всего лишь один из возможных вариантов, т.е. вопрос личных предпочтений.

Spring project structure example

Ответ 2

Веб файл должен находиться в каталоге WEB-INF. Это единственное место, где будут работать серверы приложений. Кроме того, spring xml файлы могут быть в ресурсах (которые попадают в путь к классам).