springboot项目上传到nexus不通过
micropass平台编译springboot项目上传到nexus不通过
记录一下今天遇到的问题。
今天开发团队遇到一个无法上传jar包到nexus服务器上的问题,刚开始报错,说是超过了大小限制:
Ext.JSON.decode(): You’re trying to decode an invalid JSON String: 413 Request Entity Too Large openresty/1.13.6.2
因为开发团队的包已经100M了,然后联系运维将nginx服务器的配置修改了,由原来的50M大小限制改成了200M。
再次build上传,发现包是上传上去了,但是jar包不完整,本来100M的包,在nexus上只有15M,然后继续找原因。
我将开发团队的jar包拿下来,用jd打开,发现无法解析里面的代码,显示的是空的:
而我试图使用解压缩软件进行解压,发现无法解压成功,而开发团队给出的反馈是jar包可以启动,启动程序也无任何问题。
只能从开发团队的代码配置中找问题了。
最终找到了问题。
原因
由于业务团队代码里的pom.xml中的spring-boot-maven-plugin插件配置:
即,如果将这个配置设置为 true
,打包出来的 jar/war 就是 可执行 的了,可以用如下方式执行:
为啥配置为false后解压WAR包的时候就会失败? Spring Boot官网上面文档如是说:
完全可执行 的 jar/war 在文件前面嵌入了个 额外的脚本,这就使得有些命令会执行失败,比如 jar -xf
等。 查看统一部署平台在构建镜像时的日志,如下图,发现就使用了这个命令,所以WAR包就会解压失败!!!
大家将Spring Boot项目打包部署,如果使用 jar -xf
等解压命令,一定要注意 springboot的maven插件 spring-boot-maven-plugin
的 executable
配置一定要设置为 false
!!! 不然会解压失败!