我有一个通过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工作正常,问题只与静态资源有关。
答案 0 :(得分:6)
您应该提供多个资源位置来解析:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/", "classpath:/static/");
}
答案 1 :(得分:0)
对我来说,当我将@EnableWebMvc
注释添加到WebMvcConfigurerAdapter
类时,静态资源会停止提供。没有它,它工作正常。