上一講我們用官網包或者 IDE 工具,快速構建了 Spring Boot 應用,並且看到了第一個程式的執行結果:Hello World!
本文我們瞭解下 Spring Boot 的目錄結構,瞭解一個事物,清楚了它的結構,明白了內部元素各自的職責,就能很好的認識到它的組織方式和執行機制。
我們以 IntelliJ IDEA 這個 IDE 生成的 Spring Boot 應用為例,詳細地看一下應用裡邊都有哪些東西。
乍一看,內容是挺多。不過上邊不全是 Spring Boot 本身的檔案,還包含了 IDE 生成的檔案以及應用構建時生成的檔案。
我們挨個來看吧。
coursecourse:Spring Boot 生成,應用的根檔案目錄,名稱是在建立應用的時候初始化的。你建立的應用名叫 demo,那這個目錄檔名就是 demo。
.idea.idea:IntelliJ IDEA 生成,用於配置應用資訊的檔案目錄。內部包含了類庫,應用字元編碼,模組,工作區等資訊。
.mvn.mvn:Spring Boot 生成,用於一鍵透過 Maven 構建、編譯、打包和部署的檔案目錄。內部結構如下:
可以看到,該檔案目錄包含了 maven-wrapper.jar、maven-wrapper.properties 和 MavenWrapperDownloader.java 三個檔案。另外和 .mvn 同層級的 mvnw 和 mvnw.cmd 兩個檔案,是執行 maven-wrapper.jar 的入口,mvnw 用於 Linux 或 macOS,mvnw.cmd 用於 Windows。
├── .mvn │ └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties │ └── MavenWrapperDownloader.java├── mvnw └── mvnw.cmd
那麼為什麼要用 wrapper,而不用原生的 maven 方式呢?以下這個圖應該可以給你講清楚!
我們發現和傳統 maven 的使用方式相比, maven-wrapper 每次更換版本要少操作一步(圖中標紅箭頭),只需要更新配置檔案(maven-wrapper.properties )中的 distributionUrl 為目標版本即可。不過也有代價,就是首次下載 maven 包的時候,要單獨下載 wrapper(圖中藍色區塊),但這是一勞永逸的事情。
簡單講,maven-wrapper 解決了應用依賴的 Maven 版本手動切換的問題,達成自動更新的目標,提高了工作效率 。
srcsrc:Spring Boot 生成,存放應用原始碼的檔案目錄。
二級目錄 main存放程式實際執行相關程式碼, test 存放程式測試相關程式碼。
三級目錄 java 存放字尾為 .java 的程式碼檔案,resources 存放靜態檔案,模板檔案,應用配置檔案等資源或配置類檔案。java 目錄裡邊就是一個個程式碼包和程式碼檔案,CourseApplication 是整個應用程式的啟動入口。
targettarget:應用構建時生成,主要存放了原始碼編譯後的 class 檔案,相關的配置檔案以及打好的包檔案等用於實際執行的檔案。
.gitignore.gitignore:Spring Boot 生成,版本控制系統 Git 的配置檔案,表示忽略提交。該檔案中,只要遵循相應的語法,每一行可以指定一個忽略規則。
course.imlcourse.iml:IntelliJ IDEA 生成,IntelliJ IDEA 的工程配置檔案。包含了當前工程的一些配置資訊,比如模組資訊,Java 元件,Maven 元件等等以及一些模組的路徑資訊和依賴資訊。
HELP.mdHELP.md:Spring Boot 生成,幫助文件,提供了 Spring Boot相關文件和教程。
mvnw 和 mvnw.cmdmvnw 和 mvnw.cmd:Spring Boot 生成,和 .mvn 目錄下檔案搭配使用,是執行 mvnw 命令的入口。
pom.xmlpom.xml:Spring Boot 生成的專案物件模型文件,主要描述了專案的 Maven 座標和依賴關係等資訊,是專案級別的配置檔案。