微服务项目(maven父子级项目)怎么打包

本篇当中重点记录微服务项目(maven父子级项目)打包插件,文章没有一句废话, 就是直接复制粘贴到自己项目就可以用,亲测有效!

一、项目层级结构

这是最近做的微服务练习,项目是一个典型的聚合工程,mscloud的依赖就是用来管理版本号的,所有微服务有一个公共的依赖模块,就是专门存放util相关的common模块。

在实际开发当中层级结构大同小异,有的甚至会将service、dao都拆分成单独的模块。但是对于打包来说,是一样的。

关于ider创建聚合项目不熟练的,可以看一下我的这一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/125267683

在这里插入图片描述
针对于打包我写了两种情况,一种是项目继承了spring-boot-starter-parent,一种是项目没有继承spring-boot-starter-parent的情况。

二、继承了spring-boot-starter-parent

如果项目继承了spring-boot-starter-parent,那我们可以直接在需要打jar包的子工程引入spring-boot-maven-plugin的依赖即可,不需要的不用引入,像common这些属于依赖包,并不是要直接运行的工程,他可能连启动类都没有,并不需要添加插件,添加了反而可能会报错,插件的作用是将依赖的jar一并打包到当前项目的jar当中,组成一个可直接运行的jar。

在这里插入图片描述

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

之所以只需要引入spring-boot-maven-plugin并不做该插件的任何配置,原因是spring-boot-starter-parent当中的pom已经为我们做了插件依赖管理。也就是做了该插件的相关配置。

父工程可以选择性引入(可引可不引)该插件来跳过单元测试:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- 打包跳过单元测试 -->
            <configuration>
                <skipTests>true</skipTests>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
</build>

三、未继承spring-boot-starter-parent

假如项目没有继承spring-boot-starter-parent,那我们就需要手动添加插件了。

父工程添加打包依赖:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- 打包跳过单元测试 -->
            <configuration>
                <skipTests>true</skipTests>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

子工程打包依赖:

关于spring-boot-maven-plugin插件不了解的可以看我的这一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/122523633

关于Maven当中resources标签不懂的可以看我的这一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/122406081

本次依赖当中并没有用到resources标签,resources标签一般是当我们打出来的jar包少文件的时候会配置,但是基于上面项目案例,使用本篇文章的依赖打包 并没有出现少文件的情况所以没用到。

<build>
    <!-- 打出来的jar包名 -->
    <finalName>consumer-consul</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
            	<!-- 主启动类全类名 -->
                <mainClass>
                    com.gzl.cn.OrderConsulMain80
                </mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <!--可以把依赖的包都打包到生成的Jar包中-->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

四、打包流程

一定是clean install根项目,也就是父项目,原因就是common项目是其他服务所依赖的项目,假如common有变化,而你只是clean install单个的微服务,这时候就会出现common新加的代码,你并没有依赖进去,如果你项目用到了common新加的类,这时候打包可能直接就报错了。

在这里插入图片描述

  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值