2019-10-23日更新,另一种方法,请看完之后再做选择.
最近在学习spring cloud的时候,发现一个问题,就是在模块打包的时候,有一个依赖公共模块的部分,总是在打包的时候提示找不到公共模块的依赖,导致打包出错,下面是模块结构.
首先发现是因为自己的模块中pom的<parent>有问题,因为创建的时候没有选择其父依赖,导致各个模块之间各管各的,所以进行修改,将各模块<parent>标签修改为其父工程的pom.
修改好之后发现打包还是有问题,于是继续查找,直到谷歌发现,一个方法就是在公共模块中maven-plugs中加入<configuration>标签,
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--被依赖的公共模块必须加上这个,打包之后启动,选择后面带EXE的启动,依赖该模块的其他模块就不会因为找不到依赖而打包出错-->
<classifier>exe</classifier>
</configuration>
</plugin>
</plugins>
</build>
打包之后发现jar包有了新文件名,
然后再对依赖该模块的模块进行打包,就不会再有问题了, 记住打包的时候要在idea->maven,使用最外层的pom.xml打包,
另一种方法
那么问题来了,这样打包并不是最好的方法,建议使用下面的方法
将模块的main方法和配置文件删除,在resource目录下新建META-INF, 然后在该目录下新建spring.factories
-
加入配置
-
修改pom
-
最后整个模块的目录就是下面的
其实看spring源码的时候就可以知道他会默认扫描resource目录下的META-INF/spring.factories,倒入配置
, 当然引用该模块的方法还是不变
总结
打包应该还有其他的方法,是我不知道的,欢迎各位大佬指点问题