springboot2.2.X手册:项目从100M瘦身到100K,部署省事多了!

目录

​资源分离的核心

资源文件分离的构建配置

打包运行


上一篇:springboot2.2.X手册:Easypoi导出excel,最新版的手感香不香?

现在很多应用都是springboot,spring提供了一种富JAR的打包方式,直接打包后就可以运行,非常方便。


		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

同时有很多公司,也会经常打包成docker file,直接部署到阿里云上,简单明了,毕竟人家提供了一体化的部署运维方案。

但是如果只是单独采用富JAR包进行部署,会有一定的操作麻烦性

1、富JAR包每次打包后,很大很大,差不多几百兆,每次上传到服务器都是非常辛苦

2、每次发布都是全量发布,假如只是修改一个配置文件,那此时也是要全量发布,当系统很大的时候,风险就会更大,毕竟改少不如该多

3、项目交接出现断档,在项目中,经常是有人离职有人来新入职,如果原来的代码是很老的,作为一个新人进来,是否有足够的胆量进行把这个项目全部替换,别说有什么交接文档之类,很多公司在进行技术管理的时候,都非常混乱,不单单是小公司,某世界500强的公司也见识过,非常痛苦。

4、没有上发布系统的公司,现在发布系统比较普遍了,jekines非常好用,可惜小编还是喜欢阿里的自动化发布,而且,jekines不支持灰度。

5、推荐一款发布系统walle,瓦力部署,界面优雅,操作简单,支持灰度。

springboot2.2.X手册:项目从100M瘦身到100K,部署省事多了!_第1张图片

 

​资源分离的核心

当我们不采用docker,自己进行手动部署的时候,最好是lib与资源分离,因为每次lib里面加载的包体,非常多,数量会非常庞大,这样子动不动就几百M。

我们分离的目的,就是把lib分离处理,资源文件分离处理,不用每次发布的时候,都重新把lib里面的包体再打包一遍,毕竟,正常情况下,里面的包体是不变的,我们需要改变的经常只有资源文件或者业务包,而资源文件加上业务包,也往往只有几百K的大小,没必要为了这个一行代码,把整个项目全部重新打包了。

其实这里也是可以打包成war包的,这样子就可以部署到tomcat上面去,但是呢,小编不是很想,毕竟这样子做的话,我还需要去部署tomcat在服务器上,好麻烦的说,所以这里引入了执行脚本来做,本质上跟执行springboot自带的jar包的打包方式是一样的。

 

springboot2.2.X手册:项目从100M瘦身到100K,部署省事多了!_第2张图片

 

资源文件分离的构建配置

今天我们来介绍另外一种打包方式,就是资源文件分离的方式,可以直接复制使用

需要改名的地方,我已经标注:需要改名


		
			
			
				org.apache.maven.plugins
				maven-jar-plugin
				
					
					
						logback-spring.xml
						*.yml
					
					
						
							true
							
							lib/
							
							false
							
							com.boots.run.BootsApiApplication
						
						
							
							./resources/
						
					
					${project.build.directory}
				
			
			
			
				org.apache.maven.plugins
				maven-dependency-plugin
				
					
						copy-dependencies
						package
						
							copy-dependencies
						
						
							${project.build.directory}/lib/
						
					
				
			
			
			
				maven-resources-plugin
				
					
						
						copy-resources
						package
						
							copy-resources
						
						
							
								
									src/main/resources
									
										*.properties
										*.xml
										*.yml
									
									
										*.jar
									
								
							
							${project.build.directory}/resources
						
					
				
			
			
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					
					
						
							null
							null
						
					
					ZIP
					
					true
					${project.build.directory}/resources
				
				
					
						
							repackage
						
						
							
							
							
						
					
				
			
			
			
				org.apache.maven.plugins
				maven-antrun-plugin
				
					
						package
						
							run
						
						
							
								
								${project.artifactId}-${project.version}
								
								target/run
								
								target/run/resources
								
								
								
								
									
								
								
								
									
										
										
										
									
								
								
								
								
								
							
						
					
				
			
		
		
		
			
			
				src/main/java
				
					**/*.xml
				
				true
			
			
			
				src/main/resources
				
					freemaker/**
				
				true
			
		
	

打包运行

打包运行后,会在target生产一个run包,里面都是可以执行的sh文件

备注:sh文件里面的项目名称,需要自己去改名

资源文件分离的话,当改一个资源文件的时候,不用这个包重新打包,虽然我还是喜欢docker file,也提供一下这种方案。

springboot2.2.X手册:项目从100M瘦身到100K,部署省事多了!_第3张图片

 

--END--

作者:@溪云阁

原创作品,抄袭必究,转载注明出处

如需要源码,转发,关注后私信我

部分图片或代码来源网络,如侵权请联系删除,谢谢!

你可能感兴趣的:(spring,boot,jar,java,spring)