要点:
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文件中。