SpringBoot建立多模組方式以及打包方式
springboot重構多模組的步驟
模型層:model
持久層:persistence
表示層:web
步驟:
正常建立一個springboot專案
修改建立專案的pom檔案,將jar修改為pom
選擇根專案,New–Module–Maven–Next–ArtifactId中輸入model名,比如web --Next–Finish完成模組的建立
將根專案src/java下的包資訊以及屬性檔案,分別移動到新建的web模組中對應的目錄下,然後根專案的src目錄就變成一個空目錄,將其刪除,在web下面,啟動執行專案,專案成功啟動,說明構建成功了
以步驟3的方式,繼續建立其他模組persistence模組、model模組
到此三個模組web模組、persistence模組、model模組就已經建立完成,它們的依賴關係是:web 依賴於persistence,persistence 依賴於model。三個模組建立完成後,會產生三個對應的pom.xml檔案。然後根據模組依賴關係建立多模組關係,
在web.xml中新增如下依賴關係:
dependencies
dependency
groupIdcom.lhf/groupId
artifactIdpersistence/artifactId
version0.0.1-SNAPSHOT/version
/dependency
/dependencies
在persistence.xml中新增如下依賴:
dependencies
dependency
groupIdcom.lhf/groupId
artifactIdmodel/artifactId
version0.0.1-SNAPSHOT/version
/dependency
/dependencies
到此就完成了springboot多模組重構的搭建springboot專案打包
一、命令方式打成jar包 步驟
在windows環境下,啟動一個cmd命令視窗,然後複製將要打包的專案的路徑,cd 專案路徑 進入專案下面
執行命令打包,命令:mvn -Dmaven.test.skip -U clean package
此時可能打包失敗,原因是:缺少spring-boot-maven-plugin外掛,沒有找到入口類Main class,解決辦法:進入根專案的pom.xml檔案中,新增如下資訊:
build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration mainClasscom.lhf.SpringbootModelsDemoApplication/mainClass /configuration /plugin /plugins /build
然後再次執行命令:mvn -Dmaven.test.skip -U clean package
此時可能還會報錯,找不到相關的類,解決辦法,再次修改根專案的pom.xml檔案,新增相關的依賴資訊,如下:
build
plugins
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
dependencies
dependency
groupIdcom.lhf/groupId
artifactIdmodel/artifactId
version0.0.1-SNAPSHOT/version
/dependency
/dependencies
configuration
mainClasscom.lhf.SpringbootModelsDemoApplication/mainClass
/configuration
/plugin
/plugins
/build
然後再一次執行打包命令,命令:mvn -Dmaven.test.skip -U clean package,此時可能出現新的問題,它會嘗試下載相關的jar包,會提示snapshot倉儲中沒有這個包的資訊,解決辦法執行另一個命令,命令:mvn -Dmaven.test.skip -U clean install,你會發現其實還是錯誤的,你崩潰沒有?
其實上面的方法本就是錯誤的操作方法,在多模組下,我們的啟動類是在Web模組下,因此我們要將根專案中pom.xml檔案的如下資訊,剪下到Web模組下的pom.xml檔案中,如下:
build
plugins
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
configuration
mainClasscom.lhf.SpringbootModelsDemoApplication/mainClass
/configuration
/plugin
/plugins
/build
然後執行打包命令,命令:mvn -Dmaven.test.skip -U clean package, 打包之後,生成的jar包就會位於web模組下的target目錄中
打包成功之後,可以執行命令:java -jar 專案jar包.jar 啟動專案二、命令方式打war包 步驟
將springboot專案打包成war包步驟:
在Web模組下的pom.xml檔案中,新增packaging資訊為:war
然後執行打包命令:mvn -Dmaven.test.skip -U clean package 進行打包,此時它會提醒你增加WEB-INF/web.xml檔案,此時你需要到Web模組下,建立webapp/WEB_INF/web.xml檔案,將檔案建立好即可
然後再次執行打包命令,進行打包,打包成功之後,war位於web模組下的target目錄中,cmd命令進入target目錄下,執行java -jar 專案war包.war 啟動執行專案三、使用maven命令啟動專案
cmd命令進入專案的目錄,執行命令:mvn spring-boot:run 啟動專案,此時會提醒你沒有找到Main class,解決辦法,切換到Web模組下,並在pom.xml檔案中,新增如下資訊:
build
plugins
plugin
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-maven-plugin/artifactId
configuration
mainClasscom.lhf.SpringbootModelsDemoApplication/mainClass
/configuration
/plugin
/plugins
/build
再次執行:mvn spring-boot:run命令,再次啟動,此時還會報錯,提示你jar沒有找到,沒有找到相關的依賴,解決辦法:退回到根目錄,執行命令:mvn -Dmaven.test.skip -U clean install,進行相關依賴安裝,此時將會提示你已經成功,再次進入Web模組目錄下,執行:mvn spring-boot:run進行啟動專案,就能成功啟動
解決報錯問題
如果遇到如下錯誤資訊:
[ERROR] Unknown lifecycle phase “.test.skip”. You must specify a valid lifecycle phase or a goal in the format : or :[:]:. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. - [Help 1]
解決辦法:分別執行以下命令:
mvn install
mvn compiler:compile
mvn org.apache.maven.plugins:maven-compiler-plugin:compile
mvn org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile
即可解決