本篇當(dāng)中重點(diǎn)記錄微服務(wù)項(xiàng)目(maven父子級(jí)項(xiàng)目)打包插件,文章沒(méi)有一句廢話(huà), 就是直接復(fù)制粘貼到自己項(xiàng)目就可以用,親測(cè)有效!
一、項(xiàng)目層級(jí)結(jié)構(gòu)
這是最近做的微服務(wù)練習(xí),項(xiàng)目是一個(gè)典型的聚合工程,mscloud的依賴(lài)就是用來(lái)管理版本號(hào)的,所有微服務(wù)有一個(gè)公共的依賴(lài)模塊,就是專(zhuān)門(mén)存放util相關(guān)的common模塊。
在實(shí)際開(kāi)發(fā)當(dāng)中層級(jí)結(jié)構(gòu)大同小異,有的甚至?xí)ervice、dao都拆分成單獨(dú)的模塊。但是對(duì)于打包來(lái)說(shuō),是一樣的。
關(guān)于ider創(chuàng)建聚合項(xiàng)目不熟練的,可以看一下我的這一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/125267683
針對(duì)于打包我寫(xiě)了兩種情況,一種是項(xiàng)目繼承了spring-boot-starter-parent,一種是項(xiàng)目沒(méi)有繼承spring-boot-starter-parent的情況。
二、繼承了spring-boot-starter-parent
如果項(xiàng)目繼承了spring-boot-starter-parent,那我們可以直接在需要打jar包的子工程引入spring-boot-maven-plugin的依賴(lài)即可,不需要的不用引入,像common這些屬于依賴(lài)包,并不是要直接運(yùn)行的工程,他可能連啟動(dòng)類(lèi)都沒(méi)有,并不需要添加插件,添加了反而可能會(huì)報(bào)錯(cuò),插件的作用是將依賴(lài)的jar一并打包到當(dāng)前項(xiàng)目的jar當(dāng)中,組成一個(gè)可直接運(yùn)行的jar。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
之所以只需要引入spring-boot-maven-plugin并不做該插件的任何配置,原因是spring-boot-starter-parent當(dāng)中的pom已經(jīng)為我們做了插件依賴(lài)管理。也就是做了該插件的相關(guān)配置。

父工程可以選擇性引入(可引可不引)該插件來(lái)跳過(guò)單元測(cè)試:
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<!-- 打包跳過(guò)單元測(cè)試 -->
<configuration>
<skipTests>true</skipTests>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</build>
三、未繼承spring-boot-starter-parent
假如項(xiàng)目沒(méi)有繼承spring-boot-starter-parent,那我們就需要手動(dòng)添加插件了。
父工程添加打包依賴(lài):
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<!-- 打包跳過(guò)單元測(cè)試 -->
<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>
子工程打包依賴(lài):
關(guān)于spring-boot-maven-plugin插件不了解的可以看我的這一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/122523633
關(guān)于Maven當(dāng)中resources標(biāo)簽不懂的可以看我的這一篇文章:
https://blog.csdn.net/weixin_43888891/article/details/122406081
本次依賴(lài)當(dāng)中并沒(méi)有用到resources標(biāo)簽,resources標(biāo)簽一般是當(dāng)我們打出來(lái)的jar包少文件的時(shí)候會(huì)配置,但是基于上面項(xiàng)目案例,使用本篇文章的依賴(lài)打包 并沒(méi)有出現(xiàn)少文件的情況所以沒(méi)用到。
<build>
<!-- 打出來(lái)的jar包名 -->
<finalName>consumer-consul</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<!-- 主啟動(dòng)類(lèi)全類(lèi)名 -->
<mainClass>
com.gzl.cn.OrderConsulMain80
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依賴(lài)的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
四、打包流程
一定是clean install根項(xiàng)目,也就是父項(xiàng)目,原因就是common項(xiàng)目是其他服務(wù)所依賴(lài)的項(xiàng)目,假如common有變化,而你只是clean install單個(gè)的微服務(wù),這時(shí)候就會(huì)出現(xiàn)common新加的代碼,你并沒(méi)有依賴(lài)進(jìn)去,如果你項(xiàng)目用到了common新加的類(lèi),這時(shí)候打包可能直接就報(bào)錯(cuò)了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-411306.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-411306.html
到了這里,關(guān)于微服務(wù)項(xiàng)目(maven父子級(jí)項(xiàng)目)怎么打包的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!