我有一个通过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>
我可以看到文件被复制到两个目录“静态”中。这是我对资源处理程序的配置:
@Configuration @EnableWebMvc public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/"); }
控制器的RequestMappings工作正常,问题仅在于静态资源。
您应该提供多个资源位置来解决:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/", "classpath:/static/"); }