spring boot源码和lib分开打包

1.项目通过maven引入的jar多了之后,用maven打出的jar会非常庞大,我的是因为引入了ffmpeg的相关jar,所以,每次上传服务更新都要传输好久,修改maven打包方式,改为源码和lib分离模式

2.maven的pom.xml配置如下

xml 复制代码
<build>
		<plugins>

			<!-- Step 1: 只打包源码(不包含依赖) -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.4.0</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>com.xxx.springboot.xxxxxApplication</mainClass> <!-- 替换为你自己的主类 -->
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
						<manifestEntries>
						<!-- 不上maven管理的jar引入方式 -->
							<Class-Path>lib/DmJdbcDriver18-1.0.jar lib/encrypt-body-spring-boot-starter-1.2.3.jar</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>

			<!-- Step 2: 使用 spring-boot-maven-plugin 打包并提取依赖到 lib/ -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>repackage</id>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<skip>true</skip> <!-- 禁用默认 repackage -->
						</configuration>
					</execution>
					<execution>
						<id>build-info</id>
						<goals>
							<goal>build-info</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- Step 3: 提取依赖到 target/lib/ -->
			<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>${project.build.directory}/lib</outputDirectory>
							<overWriteReleases>false</overWriteReleases>
							<overWriteSnapshots>false</overWriteSnapshots>
							<overWriteIfNewer>true</overWriteIfNewer>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Step 4 (可选): 创建最终发布的 dist 文件夹 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<target>
								<mkdir dir="${project.build.directory}/dist"/>
								<copy file="${project.build.directory}/${project.build.finalName}.jar"
									  tofile="${project.build.directory}/dist/chenzhou.jar"/>
								<copy todir="${project.build.directory}/dist/lib">
									<fileset dir="${project.build.directory}/lib"/>
								</copy>
							</target>
						</configuration>
					</execution>
				</executions>
			</plugin>

		</plugins>
	</build>

3.对于非maven仓库中的包处理方式

xml 复制代码
<!-- 非maven仓库包 -->
<dependency>
	<groupId>com-dm</groupId>
	<artifactId>DmJdbcDriver18</artifactId>
	<version>1.0</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/lib/DmJdbcDriver18.jar</systemPath>
</dependency>
<!-- 指定jar位置,多个以空格分开,对于不上版本结尾的名称,打包放入lib后会自动增加1.0,所以,引入jar写入也要增加 
例如:达梦数据库驱动包,项目实际引入DmJdbcDriver18.jar
在Class-Path中的配置要为:DmJdbcDriver18-1.0.jar
-->
<manifestEntries>
	<Class-Path>lib/DmDialect-for-hibernate6.1-1.0.jar lib/DmJdbcDriver18-1.0.jar</Class-Path>
</manifestEntries>

如有不妥之处,请谅解!

相关推荐
小张快跑。18 小时前
Maven指定版本下载以及相关配置
java·maven
摸鱼仙人~19 小时前
Flask-SocketIO 连接超时问题排查与解决(WSL / 虚拟机场景)
后端·python·flask
计算机毕设指导619 小时前
基于微信小程序的校园物品租赁与二手交易系统【源码文末联系】
spring boot·mysql·微信小程序·小程序·tomcat·maven·intellij-idea
Lisonseekpan19 小时前
@Autowired 与 @Resource区别解析
java·开发语言·后端
Gu_yyqx19 小时前
Maven管理工具
java·maven
计算机毕设指导619 小时前
基于微信小程序的水上警务通系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
陌生的人儿19 小时前
老年痴呆患者心血管防护,硝酸甘油使用需 “专人监护”
java·eclipse·tomcat·maven·0.3mg硝酸甘油舌下片
chenyuhao202419 小时前
Linux系统编程:线程概念与控制
linux·服务器·开发语言·c++·后端
IT_陈寒20 小时前
Redis 性能优化实战:5个被低估的配置项让我节省了40%内存成本
前端·人工智能·后端
qq_124987075320 小时前
基于springboot的智能医院挂号系统(源码+论文+部署+安装)
java·人工智能·spring boot·后端·毕业设计