Maven打包实践:实现代码与三方依赖分离

一、前言

在实际项目中,经常会遇到这样的问题。自己的业务代码就十几KB,结果项目打包后,整个jar包却达到了上百MB,受限于网络等限制,导致升级一次功能会非常耗时。这里我们就介绍下如何将自己的代码和三方依赖分开,如果不变动依赖,每次只升级自己的代码部分就可以。

二、实践

2.1 修改pom.xml

<plugins>
	<!-- 让 JAR 知道主类是哪个 -->
	<plugin>
		<artifactId>maven-jar-plugin</artifactId>
		<version>3.2.0</version>
		<configuration>
			<archive>
				<manifest>
					<mainClass>com.wno704.WnoQuartzAdminApplication</mainClass>
				</manifest>
			</archive>
			<outputDirectory>${project.build.directory}/output</outputDirectory>
		</configuration>
	</plugin>
	<!--配置了maven坐标,会把依赖放入project.build.directory的output/lib下-->
	<!-- 拷贝依赖到 lib 目录 -->
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-dependency-plugin</artifactId>
		<version>3.1.2</version>
		<executions>
			<execution>
				<id>copy-dependencies</id>
				<phase>package</phase>
				<goals>
					<goal>copy-dependencies</goal>
				</goals>
				<configuration>
					<outputDirectory>${project.build.directory}/output/lib</outputDirectory>
				</configuration>
			</execution>
		</executions>
	</plugin>
</plugins>

注意:mainClass需要指定项目的主类,springboot项目就是SpringBootApplication所在的类。

2.2 项目启动

由于根据以上的pom文件,打包会将自己的代码成一个干净的 xxx.jar(仅包含 .class、资源等,不含依赖);三方依赖打包输出到 lib/ 子目录中,便于管理、替换、升级。这样我们每次升级只需要替换自己的xxx.jar就可以了。
5ec6815f-c949-4793-9052-c37b521bd6e1.png
这个时候,我们的启动脚本要修改如下:

java -cp "wnoQuartzAdmin.jar;lib/*" com.wno704.WnoQuartzAdminApplication

注意:其中wnoQuartzAdmin.jar为自己代码生成的jar包。
最后项目启动如下:
1fa74100-79fa-41f9-bf02-b71d26738975.png
系统访问也正常
186357a8-97bf-44d2-9295-1329f3827d7d.png

posted on 2026-08-10 15:27  爱河  阅读(1)  评论(0)    收藏  举报

导航