Maven 多个war项目的引用关系 overlay配置实例

在Maven项目中,一般是jar文件的依赖,但是也要考虑一种情况,那就是war项目的依赖。

比如说base war项目包含基本的网页,但是需要为另外有一个定制的war项目有几个页面是需要特别定制的。

直接拷贝base war所有的页面到新的定制的war项目,会带来很大的冗余,并且以后公共的部分有问题的话,需要两处一起修改,这不是个好的解决办法。

Maven 的war plugin 的overlay可以解决这个问题

1) 完成后的文件列表:

a)注意其中的黄色部分在两个项目中都有,否则会导致第二个Springboot application 无法启动

b) 在为WX项目打包的时候,红色的index.html会被蓝色的index.html覆盖

 

2) 父项目的pom文件, 注意项目packaging 为pom, 而不是Jar或者war

并且列出了下属的子maven module



  4.0.0
  
	org.springframework.boot
	spring-boot-starter-parent
	2.1.1.RELEASE
	
  
  com.sz
  EstateManagementProject
  0.0.1-SNAPSHOT
  pom
  Parent
  父项目
  
  	EstateManagement-Base
    EstateManagement-WX
  

3) base 子项目的pom文件, 普通的一个SpringBoot 项目



	4.0.0
	
		com.sz
		EstateManagementProject
		0.0.1-SNAPSHOT
	
	com.sz
	EstateManagement-Base
	war
	EstateManagement-Base Maven Webapp
	http://maven.apache.org

	
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-tomcat
			provided
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

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


4) WX子项目的pom文件:

a)依赖于base项目

b)SpringBoot打包的时候排除base项目,否则会把base以war的形式放在lib-provided,浪费空间

c) overlay部分指定依赖base项目

d) 可以排除某些文件



	4.0.0
	
		com.sz
		EstateManagementProject
		0.0.1-SNAPSHOT
	
	zhishusz2
	EstateManagement-WX
	war
	EstateManagement-WX
	http://maven.apache.org
	
		UTF-8
	
	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-tomcat
			provided
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			com.sz
			EstateManagement-Base
			0.0.1-SNAPSHOT
			war
			provided
		
	

	
		wx
		
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					
						
							
							com.sz
							EstateManagement-Base
						
					
				
			
			
				org.apache.maven.plugins
				maven-war-plugin
				
					
						
							com.sz
							EstateManagement-Base
							
							
								WEB-INF/classes/com/bank2/exclude/**
							
						
					
					false
					
					false
				
			
		
	


5) 以SpringBoot启动wx项目后,无法访问base项目的 base/index.html文件,但是以普通tomcat的war项目启动,则没有这个限制。

6)附加,BASE项目可以用把class文件单独打包并发布到Maven repository


maven-war-plugin


true

然后WX项目可以用以下依赖


    com.sz
    EstateManagement-Base
    0.0.1-SNAPSHOT
    jar
    classes
    provided
 

 

 

 

 

你可能感兴趣的:(Java)