Maven打包失败原因总结如下:
使用spring-boot-maven-plugin插件可以创建一个可执行的JAR应用程序,前提是应用程序的parent为spring-boot-starter-parent。
需要添加parent的包spring-boot-starter-parent
org.springframework.boot spring-boot-starter-parent 2.3.6.RELEASE
在多模块依赖时,若parent包不是的spring-boot-starter-parent,而是自己定义的包,则应该在插件中添加如下配置:
org.springframework.boot spring-boot-maven-plugin repackage
根据官网的说法,直接生成的包是可执行的jar包,可执行jar包无法被依赖。
通过解压缩jar包,可以看到可执行的jar包有BOOT-INF和META-INF文件夹,可被依赖的jar包无BOOT-INF文件夹,只含有META-INF文件夹。
通过以下配置生成两个jar包,可以被依赖。
org.springframework.boot spring-boot-maven-plugin exec
报错:程序包xxx不存在!
例如:各模块的依赖结构如下
管理员模块依赖安全模块,安全模块依赖公共模块,他们都有父模块。
有的人在子模块中也添加了插件,若在子模块中执行打包命令,只能打包单独的模块,会出现程序包不存在的报错。
org.springframework.boot spring-boot-maven-plugin
正确的做法:应该在父模块执行打包命令!
插件配置如下:
org.springframework.boot spring-boot-maven-plugin exec repackage
有时从别的地方克隆一个SpringBoot项目,或者在自己电脑或公司电脑拉取相同的项目代码,并且使用Maven编译也通过了,奇怪的是当Build Project时却提示包不存在,或符号不存在 。
明明文件就在对应的地方,检查maven依赖也没问题,这时很可能是IDEA配置文件错了。
因此,需要重新生成IDEA的配置文件。
mvn idea:idea
在如图的右上角调出mvn的终端,输入mvn idea:idea命令,它会根据pom文件重新生成对应的IDEA配置文件(.iml)
最后,生成jar包后,执行命令启动
nohup java -jar xxx.jar &