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命令,值得推荐使用。

经验分享 程序员 微信小程序 职场和发展