工具:IDEA2020.2.3版本
在構建大型maven專案時,通常采用的工程型別,基本為聚合工程,我們公司也一樣,決定引入springboot微服務架構,采用idea+maven+springboot的方式構建,由于springboot搭建聚合工程,與傳統的spring+maven構建聚合工程,方式有部分出入,剛開始,搭建了幾次,都沒成功,經過多次嘗試,最后搭建成功了,這里一方面,分享一下自己在搭建springboot聚合工程的注意事項,另一方面,給自己保留搭建資料,以免以后忘記了,再踩坑,具體搭建方法如下:
一:通過spring initializr 創建一個父子工程 例如:父工程admin,

在創建父工程的程序,有建議采用maven方式創建父工程,以后,搭建不成功,可能是因為在嘗試階段,不得其法所致,
- 1 將admin(父工程)下的 src 、.mvn、mvnw、mvnw.cmd 這四個檔案全部洗掉
如圖:

-
- 2在父工程(admin)中,保留springboot 的<parent></parent>配置,修改打包方式<packaging>為”pom”,同時,在<properties>中,統一編碼等版本號為UTF-8
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/>
</parent>
<properties>
<start-class>com.uechv.eoffice.portal</start-class>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
1.3 手動配置依賴管理項,在構建聚合工程時,maven并不會給我們設定依賴管理項,得由我們自己配置:
<dependencyManagement></dependencyManagement>
1.4 在<dependencies> </dependencies>中配置<!--springboot依賴配置-->
--以前嘗試搭建的時候,就是忽略了這個細節,導致多構建聚合工程都不成功
<!--springboot依賴配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
1.5 在父工程中引入其他子模塊的依賴并注明打包方式-type的屬性為:jar
例如:
<dependency>
<groupId>com.uechv.eoffice</groupId>
<artifactId>dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
1.6 在<build></build>中添加一下屬性添加maven-compiler-plugin屬性,如果不配置該屬性,執行package方法時會報錯:程式包org.springframework.boot不存在,
【注】這個地方也是一大坑,之前構建時,也沒注意到這個細節,后面參考同行的搭建有提到這里,所以在搭建時,添加進去,果然沒問題
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
</plugin>
</plugins>
</build>
二、 在子工程搭建時,注意配置的包路徑,一定要在父工程之下,否則,構建出來的結果,并不是自己想要的,因為我采用的時IDEA2020.2.3版本開發工具,搭建的路徑可能和其他開發版本不太一樣,但與IDEA2020.2.2開發工具差別不大,
例如:我搭建時的父工程路徑為:com.xxx.xxx.admin

三、創建子工程時,直接在admin工程上右鍵 > new > module 創建子模塊,
【注意】:子工程創建的路徑應為:例如: com.xxx.xxx.admin.dao,在其他版本的IDEA可能是”/”表示路徑

四、只保留入口(web)的Application.java的main方法,其他子專案的main方法全部洗掉,否則,打包不成功
五、只保留入口(web)的application.properties,其他子專案的application.properties全部洗掉
如下圖所示

六、在子專案中引入<parent></parent>

七、springboot打包方式,先對子工程的包挨個install打包,最后執行父工程 install打包

[備注]:如果不保留springboot父工程中的<parent></parent>,專案打包時就會出現如下報錯:
****程式包org.springframework.boot不存在
****程式包org.springframework.boot.autoconfigure不存在
【這個坑】原因是,springboot針對spring-boot、autoconfigure、web、test的版本控制,是通過父工程<parent></parent>中的版本號進行版本控制,這一點與maven構建spring聚合工程的版本控制有點區別
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/242368.html
標籤:其他
上一篇:大三實習
