我有一个应用程序在通过 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/