SpringMVC访问Maven子依赖jar下的静态资源
需求
最近在设计编码存储(云存储、本地存储)管理系统,希望做到封装独立模块jar,jar内包含功能代码及前端打包后的代码。使用时创建另外的maven web项目依赖该jar,web项目可访问依赖jar内的静态资源html、js、css等。
解决
之前项目没有遇到过该场景,尝试检索“spring访问依赖jar静态资源”等各类关键字找不到简单明了的解决方案,后在spring官网文档通过搜索jar找到关键字webjars,又找到关键的一句“servlet3.0及以上版本可以读取jar包下/META-INF/resources资源”,最终测试成功。
结合实际业务简化如下:
1、maven多模块项目,使用了Spring Boot,模块A为功能模块,不需要可执行,模块A中有前端代码;模块B依赖模块A,作为可执行jar,运行后可通过访问localhost:8080打开网页。
2、在模块A的resources/static目录下放置前端编译好的代码结构如下。
3、模块A中配置resources插件,将resources代码打包至jar包的META-INF/resources中。
1 | <build> |
4、模块B依赖模块A,同时在application.yml中进行配置。
1 | <dependency> |
1 | spring: |
5、启动模块B,页面访问成功。