Springboot项目工程拆分实现(几乎)不停机更新,拆分方案,maven打包,启动执行总结。

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中配置过的工程都将会打包。有时子工程打包会报错再次执行就通过了,至于为什么还没研究。

猜你喜欢

转载自blog.csdn.net/apple1542/article/details/142959553