java - Spring Boot App 打包成 jar 后不提供静态资源

标签 java spring maven spring-mvc spring-boot

我有一个应用程序在通过 ide 或命令行启动时运行良好:mvn spring-boot:run。但是当我把它打包成jar时,我无法访问静态资源(404 not found)。我不想将静态文件存储在 resource fouler 中,所以我不必每次需要更改静态文件时都重新加载服务器。所以我在我的 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>

我可以看到文件被复制到“静态”目录中的两个目录中。 这是我的资源处理程序配置:

    @Configuration
    @EnableWebMvc
    public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
    }

Controller RequestMappings 工作正常,问题仅出在静态资源上。

最佳答案

您应该提供多个资源位置来解析:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("/", "classpath:/static/");
}

关于java - Spring Boot App 打包成 jar 后不提供静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232464/

相关文章:

java - Maven JAVA_HOME 环境变量未正确定义,但它是

java - 如何在 MDB 中停止回滚?

java - Hibernate:删除相关行

java - 如何将Gradle项目编译为可以在Android应用程序中使用的jar文件

java - Tomcat : Is there a standard way to create a thread per request?

java - 使用 Spring Data 和 MySQL 运行 2 个事务方法时出现死锁

java - Guava 破坏了 maven-plugin

java - .java 文件中的包私有(private)类 - 为什么可以访问它?

java - 自动重复本地通知?

java - spring mvc 中的 Bean 验证和请求参数