这篇文章参考了多篇博客,总结了父工程、含有启动类的子工程、不含启动类的子工程、含有mapper的子工程等多种形式的pom.xml配置及打包方式。
1.1 项目结构该项目是一个pom聚合项目
1.2 在父工程的pom.xml中加上
1.3 在含有启动类的子工程中pom org.apache.maven.plugins maven-compiler-plugin3.1 ${java.version} ${java.version} org.apache.maven.plugins maven-surefire-plugin2.22.2 true
含有启动类的子工程,需要指定启动类地址,打包完成后执行jar包就是执行该启动类。
1.4 不含有启动类的子工程中jar org.springframework.boot spring-boot-maven-pluginorg.javaboy.vhr.VhrApplication ZIP repackage
不含启动类的子工程,在中取消生成jar包,否则在使用maven进行打包的时候,一直提示“程序包xxx不存在,找不到符号”
1.5 含有mapper的子工程jar org.springframework.boot spring-boot-maven-plugintrue
因为mapper.xml文件是在resource目录下,在打包时候可能不会加载进去,需要将mapper.xml文件加载进去,否则在执行jar包的时候,会报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)映射文件找不到的错误。如下所示的配置中,
org.springframework.boot spring-boot-maven-plugintrue src/main/java ***.xml false src/main/resources ***.xml false
我项目中的mapper在的工程中不含启动类,所以配置如上图,有些人的项目中mapper和启动类在一个工程中,把
1.6生成jar包jar org.springframework.boot spring-boot-maven-pluginorg.javaboy.vhr.VhrApplication ZIP repackage src/main/java ***.xml false src/main/resources ***.xml false
测试生成的jar文件是否正常执行,新建空文件,将jar包复制进去。直接在上面cmd回车进入窗口。
执行java -jar xxxx.jar
浏览器访问,访问成功。我这里是已启动前端,可以直接登录到自己的项目。没有前端的自己浏览器输入自己后端的访问地址或者在postman中测试即可。



