Файл WAR содержит статические ресурсы дважды после сборки Gradle WAR

Раньше статические ресурсы для веб-приложения всегда находились в src/main/webapp.

Недавно Spring Initializr создал для меня новый макет проекта и, таким образом, обнаружил, что ресурсы должны находиться в src/main/resources/static. Я предполагаю, что это новый стандарт
Из-за этого изменения проекты теперь также запускаются сразу под IntelliJ, а для Eclipse у меня есть эта адаптация в файле build.gradle:

project.webAppDirName = 'src/main/resources/static'

eclipse {
    wtp {
        component {
            contextPath = '/'
            deployName = 'myapp'
        }
        facet {
            //facet name: 'jst.web', version: '3.1'
            file {
                whenMerged {
                    facets.each { f ->
                        if (f.name == 'jst.web') {
                            f.version = '3.1'
                        }
                    }
                }
            }
        }
    }
}

Сегодня я построил WAR и должен был понять, что статических ресурсов в нем вдвое больше.

Происходит некая магия (автоматизм).

Что-то копирует мои статические ресурсы в корень WAR, как это было, когда они находились под webapp. Те же ресурсы можно найти в разделе WEB-INF/classes/static.

Я предполагаю, что статические ресурсы находятся в нужном месте в корне WAR. Как правильно в Gradle избегать ресурсов под WEB-INF/classes/static?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
314
1

Ответы 1

Контент с src/main/resources по умолчанию копируется на WEB-INF/classes. Установка project.webAppDirName создает дополнительный sourceSet, который копируется в (корневую папку) файла war.

Чтобы исключить определенные файлы из операции копирования по умолчанию, вы можете исключить файлы из sourceSet следующим образом:

war {
    rootSpec.exclude('**/static/**')
}

Это описано здесь:

Как исключить файлы src / main / resources из финальной WAR?
Как исключить каталог и его содержимое в Gradle War
Как я могу исключить файлы из WAR при использовании плагина WAR для местоположения по умолчанию или webAppDirName
Неправильные файлы добавлены в пакет WAR с помощью Gradle

Другие вопросы по теме