Приложение Spring boot не обслуживает статические ресурсы после упаковки в jar
У меня есть приложение, которое прекрасно работает при запуске через ide или из командной строки: mvn spring-boot:run. Но когда я упаковываю его в jar, я не могу получить доступ к статическим ресурсам (404 не найдено). Я не хотел хранить статические файлы в хранилище ресурсов, поэтому мне не нужно перезагружать сервер каждый раз, когда мне нужно изменить статический файл. Так что я использовал этот плагин в моем pom.xml:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/static</outputDirectory>
<resources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Я вижу, что файлы копируются в две директории "static". Это моя конфигурация обработчика ресурсов:
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/");
}
Контроллеры RequestMappings работают нормально, проблемы только со статическими ресурсами.
2 ответа
Вы должны предоставить несколько ресурсов для разрешения:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/", "classpath:/static/");
}
Для меня статические ресурсы перестают обслуживаться, когда я добавляю @EnableWebMvc
аннотация к WebMvcConfigurerAdapter
учебный класс. Без этого все работает нормально.