SpringBoot 多模块打包是个坑,各位同行的资料借鉴了不少还是花了一下午才爬出来。
需求背景
已构建一个Spring Boot多模块项目,项目结构为
image.png
其中:
api模块和common模块是基础模块,没有引用其他模块
dao模块是Mybatis基础的模块,还引用了common模块
service模块引用了dao模块和api模块
web模块引用了service模块,是springboot的启动入口模块
配置POM文件
父工程的POM
不要配置build节点
不要配置build节点
不要配置build节点
api模块
image.png注意:不配置build节点,不要手抖加了Maven的插件哦
注意:红色框住的默认是没有的,加一下指定父pom文件的位置
common模块
同api模块
dao模块
image.png注意:这里配置build节点只是因为dao模块里有Mybatis的xml文件
service模块
同api模块
web模块
这里是重点,直接贴代码
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**.*</include>
<include>**/*.*</include><!-- i18n能读取到 -->
<include>**/*/*.*</include>
</includes>
</resource>
</resources>
<!-- 为jar包取名 -->
<finalName>web-start</finalName>
<plugins>
<!-- 热布署 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,这个devtools不会起作用,即应用不会restart -->
<fork>true</fork>
<mainClass>com.eliteai.et8080.Et8080WebApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
<!--可以生成不含依赖包的不可执行Jar包-->
<!-- configuration>
<classifier>exec</classifier>
</configuration> -->
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>true</skipTests> <!--默认关掉单元测试 -->
</configuration>
</plugin>
</plugins>
</build>
到这里结束了,对着项目package就行了。可行请点个赞哈~
网友评论