Spring Boot共享web模块(jar文件覆盖?)

时间:2016-06-16 14:48:02

标签: java maven jar spring-boot static-resource

在使用.war输出进行Web开发之前,可​​以选择模块化战争叠加http://maven.apache.org/plugins/maven-war-plugin/overlays.html

现在Spring Boot采用jar包装,如何制作一些共享的网络资源?

那就是依赖于com.company.shared.web模块,比如图像 /com.company.shared.web/src/main/resources/static/images/background-image.png
如何使这个图像可用于在主模块中运行Spring启动应用程序? Maven标准依赖项解析将只使Java类可用。

P.S。 类似的问题,但.war包装是Spring Boot & Maven war overlay而未解决https://github.com/spring-projects/spring-boot/issues/1030

1 个答案:

答案 0 :(得分:4)

Maven Dependency Plugin

您可以使用此插件解压缩jar依赖项并将文件复制到另一个目录。

<强> Full Sample Project

在这个示例项目中,您有一个父POM,后面是两个Maven模块的Jar包装。

  • Web-App - Spring Boot App,可执行Jar,使用Web-Library作为Depdenency&amp; Maven Depedency Plugin从Web-Library中提取静态文件并将它们复制到自己的静态目录
  • Web-Library - 包含静态资产的库Jar,例如css&amp;要与其他模块共享的javascript文件,例如Web-App

<强>说明

mvn clean package
java -jar web-app/target/web-app-0.0.1-SNAPSHOT.jar

浏览到localhost:8080并注意到style.css&amp;加载了来自Web-Library模块的script.js.