Приложение 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 учебный класс. Без этого все работает нормально.

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