要点:
1.父模块packaging为<packaging>pom</packaging>,其他子模块全部是<packaging>jar</packaging>;
父模块和其他非启动项模块的pom都不需要添加maven-plugin插件
2.启动项(就是你SpringBoot项目有启动类的那个模块:xxxApplication)的模块需要添加maven-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3.如果项目中有手动添加的jar包, 如lib中的本地jar,还需要添加一行配置,否则打好的jar包中是没有的。
项目引入本地jar:

<!-- 以阿里的钉钉机器人依赖为例 这个jar是保存在子模块的lib下 -->
<dependency>
<groupId>alitool</groupId>
<artifactId>dingtalk</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/dingtalk-sdk/taobao-sdk-java-auto_1479188381469-20191128.jar</systemPath>
</dependency>
添加配置:在上面启动项模块的基础上再添加<configuration>里的配置,这样就会把本地引入的jar也打包进去。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4.使用Idea的maven对父模块(也就是packaging为pom的模块)依次进行clean、package

5.以上操作完成且控制台无异常表明本次打包完成.打好的jar包在启动项模块的target下。

6.可以在idea中启动运行成功

7.也可以在控制台输入:java -jar XXX.jar 来启动jar包,control + c 关闭程序。
当前窗口后台运行:java -jar XXX.jar &,可在运行的同时执行其他命令,关闭窗口会随即关闭程序。
后台运行:nohup java -jar XXX.jar &,程序日志会输出到当前目录下的nohup.out文件。
nohup java -jar XXX.jar > temp.out &,程序日志会输出到temp.out文件中。
本文介绍了如何使用IntelliJ IDEA(Idea)和Maven来打包包含多个模块的SpringBoot项目。关键步骤包括:1) 父模块设置packaging为pom,子模块为jar;2) 启动模块添加maven-plugin插件;3) 配置处理本地jar的引入;4) 对父模块执行clean和package;5) 打包后的jar位于启动模块的target目录;6) 可在Idea内运行或通过命令行以不同方式启动jar包。
9918

被折叠的 条评论
为什么被折叠?



