IDEA+Spring Cloud+Maven模块化项目打包的坑

背景:采用Spring Cloud框架搭建了一个项目,里面包含多个微服务,其中项目A依赖项目B,项目B里面是公共类。

坑一:cmd命令——mvn package打包出错

打包项目A的时候,用IDEA里面的maven插件打包没有问题,但是用cmd命令mvn package打包时报错,报错信息说找不到项目B里面的类。

于是开始排查问题,私库和本地库上都有B的jar包,A的pom文件也有B的依赖,一切看起来都很正常。最后网上查找了资料,原来是因为B项目pom文件里面引入了spring-boot-maven-plugin插件:


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

这个SpringBoot插件会在Maven的package后进行二次打包,目的为了生成可执行jar包。正是因为产生了可执行jar包(与普通用于引用的jar包目录结构不同),所以A项目打包时就找不到B项目的类。

解决方法:B项目的pom文件中把上面的插件去掉,重新发布到私服,A项目就可以成功打包。

坑二:运行时报错,找不到本地引入的jar包

运行项目A的时候,报错找不到jdbc的驱动类,可是我的驱动包明明已经在pom文件里面本地引入了。把项目A打包的jar包打开查看,发现里面的本地引入的jar包都没有了。

网上查找了原因,原来又是上一个坑的那个spring-boot-maven-plugin插件的问题:


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

要打包本地的jar包,spring-boot-maven-plugin需要加上这一行:


	true

解决方法:在项目A的pom文件中,把spring-boot-maven-plugin改为:


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

坑三:修改spring-boot-maven-plugin版本,访问jsp报错:404

修改了spring-boot-maven-plugin为2.0.4版本后,打包运行后发现原本可以访问的jsp变成无法访问。
原来,要想打包后能访问jsp,只能使用1.4.2.RELEASE版本的spring-boot-maven-plugin插件。
附上插件pom:


	
		
			org.springframework.boot
			spring-boot-maven-plugin
               
			1.4.2.RELEASE
			
				
					
						repackage
					
				
			
		
	
	
		
		
			
			src/main/webapp
			
			META-INF/resources
			
				**/**
			
		
		
			src/main/resources
			
				**/**
			
			false
		
		
			src/main/java
			
				**/*.java
			
		
	

你可能感兴趣的:(运维,后台架构)