maven对微服务有通用模块的子模块打包
前言
在maven工具之下,Java微服务项目中,一般会有“common”相关的通用模块,其他业务模块依赖于它,如果maven的pom文件配置不对,在父模块节点使用mvn package 或IDEA自带的package操作,会报错。
网上一堆相关文章,亲自尝试后解决无果。遂自行尝试出一套解决方案,供大家操作。
code
首先父pom文件之中,需要加上配置的内容是。因为父模块没有main启动方法,所以不需要 spring-boot-maven-plugin 。记住只有在父pom之中才在packing中用“pom”,而其他子模块一律用“jar”。
<packaging>pom</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!-- 默认关掉单元测试,不用手动关闭了 --> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build>
然后在通用模块之中,也就是没有main主方法的公共模块中,加上配置。这个很关键,千万不要使用<packaging>pom</packaging>,其他的暂且不需要加。
<packaging>jar</packaging>
再在其他模块之中,加上配置内容。切记千万不要使用<packaging>pom</packaging>
<packaging>jar</packaging> ······ <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <!-- 将依赖到的包都放进去 --> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
然后在父模块使用 mvn package 命令打jar包,这里我是用IDEA的Maven Helper插件,非常好用,各个模块之间一键使用mvn命令,值得推荐使用。