Springboot项目工程拆分,按业务拆成若干个子工程
目的:业务更新时,只更新相关业务jar包(子工程),实现不停机维护
本次简单描述下,整体思路,若遇到类似需求,且用此方案,后续遇到问题可联系。
按传统模式创建Springboot父工程,子工程。
父工程(举例:parent)主要管理子工程,同样目的执行父工程打包,子工程可以统一跟着打包,无需逐一打包。在此写出区别拆分的情况(可以自行百度查询配置,本文主要介绍打包方式,使主工程能够随时调用子工程jar文件,实现不停机子工程维护):
//父工程的pom.xml文件,版本、依赖等不多描述
<modules>
<module>../common</module>
<module>../moudle-A</module>
<module>../moudle-B</module>
<module>../moudle-C</module>
<modules>
*// 子工程 pom.xml *重点打包方式,此种方法将多个子工程共通的依赖打到统一的文件夹中,这样避免单个子工程文件过大导致整个大工程依赖重复体积庞大。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!--jar包存放的路径-->
<outputDirectory>../../build/moudle</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>jp.co.qsol.moudle-AApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--子工程依赖存放的路径-->
<outputDirectory>../../build/moudle/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
完成配置后,进行打包
执行父工程pom.xml,先maven update poject(选中Force Update of Snapshots/Releases),再执行Run As maven install,这样父工程parent中,pom.xml中配置过的工程都将会打包。有时子工程打包会报错再次执行就通过了,至于为什么还没研究。