Rob*_*unt 26 spring jetty static-content maven spring-boot
Spring 最近关于在Spring Boot项目中使用静态Web内容的博客文章(https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot)表明可以使用几个资源目录:
这要归功于WebMvcAutoConfiguration类,它自动将这些目录添加到类路径中.这一切似乎都很好,并且在使用spring-boot-maven-plugin spring-boot:run目标时似乎有效,所有静态内容都在工作(例如:/index.html).
打包Spring Boot项目并允许spring-boot-maven-plugin创建增强的JAR然后尝试使用java -jar my-spring-boot-project.jar您运行项目时发现您的静态内容现在返回404错误.
Rob*_*unt 41
事实证明,虽然Spring Boot在将各种资源目录添加到类路径时非常聪明,但Maven却没有,并且由您来处理该部分.默认情况下,只会src/main/resources包含在您的JAR中.如果您创建一个/static在项目根目录中调用的文件夹(如博客文章所暗示的那样),那么在使用spring-boot时它将正常工作:运行 Maven目标但不是在创建JAR之后.
最简单的解决方案是在/static里面创建你的文件夹/src/main/resources,然后Maven将它包含在JAR中.您可以选择向Maven项目添加其他资源位置:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>static</directory>
<targetPath>static</targetPath>
</resource>
</resources>
Run Code Online (Sandbox Code Playgroud)
我希望这对某些人有用,当你退后一步看看Maven是如何运作的时候会很明显,但是它可能会让一些人使用Spring Boot,因为它的设计非常免配置.
我正在撞墙,试图找出如何用gradle做这件事.有小费吗?
编辑:我通过添加到我的build.gradle得到它的工作:
// Copy resources into the jar as static content, where Spring expects it.
jar.into('static') {
from('src/main/webapp')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32010 次 |
| 最近记录: |