Раньше статические ресурсы для веб-приложения всегда находились в 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?




Контент с 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