dubbo+springboot分模块项目发布为jar包的方法

1.错误复现

项目结构如下
dubbo+springboot分模块项目发布为jar包的方法
一开始,直接对生产者进行打包,但打包到一半出错
dubbo+springboot分模块项目发布为jar包的方法

2.正确办法

从错误信息可以看出,是service的几个依赖包在本地仓库中没有找到,所以需要【按照依赖顺序】打jar包:service依赖于api,api依赖mapper,mapper依赖common,common依赖entity。所以打包顺序为:

  1. entity
  2. common
  3. mapper
  4. api
  5. service
  6. center-web(里面放置的是controller)

3具体操作

3.1.打entity的jar包

先clean掉原来的生成内容,完成后点击install打包
dubbo+springboot分模块项目发布为jar包的方法
打包成功后如下:
dubbo+springboot分模块项目发布为jar包的方法
可以看到,打包后target中存了一份,本地的.m2仓库中存了一份

3.2.打common模块的jar包

一开始出错了:
dubbo+springboot分模块项目发布为jar包的方法
报错为:

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.2.RELEASE:repackage (default) on project books-common: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:2.0.2.RELEASE:repackage failed: Unable to find main class

解决办法:
由于common不需要启动类,只是几个工具类,但在pom中却多加了springboot插件,所以插件找不到启动类,才报错,故删除这个依赖即可。
dubbo+springboot分模块项目发布为jar包的方法
删除后再clear+install
dubbo+springboot分模块项目发布为jar包的方法

3.3.同样的方法,打包api和mapper

dubbo+springboot分模块项目发布为jar包的方法
dubbo+springboot分模块项目发布为jar包的方法
打包出来后,在target中可以看到生成的jar包
dubbo+springboot分模块项目发布为jar包的方法
dubbo+springboot分模块项目发布为jar包的方法

3.4.打包service和center-web模块

因为service和center-web都有启动类,所以pom文件中需要
dubbo+springboot分模块项目发布为jar包的方法
经过前面的打包,本地仓库中已经包含了需要的各种依赖
dubbo+springboot分模块项目发布为jar包的方法
dubbo+springboot分模块项目发布为jar包的方法
此时分别对service和center-web进行clear+install,成功打包
dubbo+springboot分模块项目发布为jar包的方法
dubbo+springboot分模块项目发布为jar包的方法
选择exec的那个jar包,用解压工具打开,看到各个包都已经被打包进去了
dubbo+springboot分模块项目发布为jar包的方法
通过java -jar xxx.jar运行,运行成功

dubbo+springboot分模块项目发布为jar包的方法