IDEA使用maven进行多模块项目打包并梳理正确的打包顺序

maven多模块打包一般相互之间都有互相的依赖关系,如果没有按照正确的依赖关系顺序进行打包就会报错。

例如有三个模块web、service、common。其中web依赖service。web和service都依赖common,那么正确的打包顺序就是:

common->service->web。

否则就会报错。

如果用一个父目录包含他们三个模块的话,可以用

maven-assembly-plugin

进行统一打包。统一打包需要在父目录中增加pom文件,并且在pom.xml注明包含关系。如:

	4.0.0

	cn.com.leonado
	test
	pom
	1.0-SNAPSHOT


	
		web
		service
        common
	

这样在maven进行统一打包的时候就会先进行父模块的打包后进行子模块的打包。子模块之间的打包顺序是根据pom.xml文件中的引用依赖顺序来决定的。以下为我的依赖顺序

web模块pom.xml引用
		
			cn.com.leonado
			service
			${project.version}
		
		
			cn.com.leonado
			common
			${project.version}
		

service模块pom.xml引用
		
			cn.com.leonado
			common
			${project.version}
		

这样的打包顺序就变成common->service->web的顺序。如果要进行打包成可运行的安装包形式就需要在maven-assembly-plugin插件中引用打包脚本。一般打包脚本卸载最外层的pom.xml中。

			
				maven-assembly-plugin
				
					leonado-test
					
						/assembly-win64zip.xml
					
				
				
					
						distro-assembly
						package
						
							single
						
					
				
			

打包脚本示例,打包脚本目录位置为web模块的根路径下:



	
	LEONADO_TEST_APIDemo(Java版)
	
		zip
	

	
	
		
			/lib
		
	
	
	
		
		
			/home/build/pki/jdk/jdk1.8.0_111/jre
			
			/jre-1.8
			
				**
			
		

		
		
			windows
			/bin
			
				*.bat
			
		

		
			log
			/log
			
				**
			
		
		
			script
			/
			
				**
			
		

		
		
			${basedir}
			/
			
				config.ini
				logback.xml				
			
		
	
	
	
		
			../common/target/common-2.0.jar
			/lib
			common-2.0.jar
		
		
			../service/target/service-2.0.jar
			/lib
			service-2.0.jar
		
	

最终打包结果为:

IDEA使用maven进行多模块项目打包并梳理正确的打包顺序_第1张图片

 

所有的依赖包全部打包到lib下,包括web.jar、service.jar、common.jar。

 

以上希望对大家有帮助。

如果转载请标明出处。

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