Spring Boot Maven 分离资源文件打包配置

Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。这时候可以在pom.xml文件中进行配置,从而使资源文件、依赖包和可执行文件分离。pom.xml配置如下:
(补充:鉴于此种方式看起来太过繁琐,总是有人在使用中出问题,故今天在文末补充一种比较简单的实现方式,推荐使用)


	
		
		
			org.apache.maven.plugins
			maven-dependency-plugin
			
				
					copy-dependencies
					package
					
						copy-dependencies
					
					
						target/lib
						false
						false
						runtime
					
				
			
		

		
			org.apache.maven.plugins
			maven-jar-plugin
			
				
					**/*.properties
					**/*.xml
					static/**
					templates/**
				
			
		

		
			org.springframework.boot
			spring-boot-maven-plugin
			
				ZIP
				
					
						non-exists
						non-exists
					
				
			
			
				
					
						repackage
					
					
						classes
						false
					
				
			
		
		
			org.apache.maven.plugins
			maven-antrun-plugin
			
				
					package
					
						run
					
					
						
							target/build
							target/build/resources
							target/build/tmp
							${project.artifactId}-${project.version}
							${project.artifactId}
							
							
							
							
							
							
							
							
							
								
							

							

							
								
									
									
								
							
							
								
									
									
									
								
							
						
					
				
			
		
	

maven打包完成后,可以在target目录下看到一个build目录,进入该目录的结构如图:
Spring Boot Maven 分离资源文件打包配置_第1张图片
test.jar文件就是可执行文件,资源文件和配置文件都在resources目录下,依赖的jar包都在lib目录下。
运行方式:java -jar -Dloader.path=resources,lib test.jar

实现方式2(推荐)
pom文件配置


	
		
			
			org.springframework.boot
			spring-boot-maven-plugin
			
				ZIP
				
					
						non-exists
						non-exists
					
				
			
		
		
		
			org.apache.maven.plugins
			maven-dependency-plugin
			
				
					copy-dependencies
					package
					
						copy-dependencies
					
					
						
						target/lib
						false
						false
						runtime
					
				
			
		
	

假设设置的maven打包目录是target,打包完成后,可以在target目录下看到一个lib目录和可执行的jar文件,lib目录内包含了项目依赖的所有jar包。

使用方式
项目发布运行的时侯,比如发布目录是app,那么就将lib目录和对应的jar文件复制到app目录,执行

java -jar -Dloader.path=lib (可执行的jar包名称).jar

命令即可。

如果要实现资源文件和配置文件外置,只需再将原项目的resources目录复制到app目录下,然后执行

java -jar -Dloader.path=resources,lib (可执行的jar包名称).jar

命令即可。

示例
鉴于有人说这种方式没用,今天抽空补下示例图
Spring Boot Maven 分离资源文件打包配置_第2张图片
注意
如果在windows10系统下运行,要用cmd,不要用PowerShell,否则可能会报Error: Unable to access jarfile xxx异常。

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