Spring Boot 項目的這些文件都是干啥用的?

大家好,我是你們的躍哥。躍哥一直在以Java作為自己的第一語言,從之前的Android到現(xiàn)在的SpringBoot、SpringCloud、Dubbo 都還沒離開過Java。
雖然一直強調(diào)SpringBoot,也沒好好和大家解釋過SpringBoot下的文件夾是干啥用的。那今天就和大家一起探討下吧。
上一講我們用官網(wǎng)包或者 IDE 工具,快速構(gòu)建了 Spring Boot 應(yīng)用,并且看到了第一個程序的運行結(jié)果:Hello World!
本文我們了解下 Spring Boot 的目錄結(jié)構(gòu),了解一個事物,清楚了它的結(jié)構(gòu),明白了內(nèi)部元素各自的職責,就能很好的認識到它的組織方式和運行機制。
我們以 IntelliJ IDEA 這個 IDE 生成的 Spring Boot 應(yīng)用為例,詳細地看一下應(yīng)用里邊都有哪些東西。
下圖是在上一講中我們用 ?IntelliJ IDEA 生成的 Spring Boot 應(yīng)用,詳情戳:五分鐘快速構(gòu)建第一個 Spring Boot 應(yīng)用。

乍一看,內(nèi)容是挺多。不過上邊不全是 Spring Boot 本身的文件,還包含了 IDE 生成的文件以及應(yīng)用構(gòu)建時生成的文件。
我們挨個來看吧。
course
course:Spring Boot 生成,應(yīng)用的根文件目錄,名稱是在創(chuàng)建應(yīng)用的時候初始化的。你創(chuàng)建的應(yīng)用名叫 demo,那這個目錄文件名就是 demo。
.idea

.idea:IntelliJ IDEA ?生成,用于配置應(yīng)用信息的文件目錄。內(nèi)部包含了類庫,應(yīng)用字符編碼,模塊,工作區(qū)等信息。
.mvn
.mvn:Spring Boot 生成,用于一鍵通過 Maven 構(gòu)建、編譯、打包和部署的文件目錄。內(nèi)部結(jié)構(gòu)如下:

可以看到,該文件目錄包含了 maven-wrapper.jar、maven-wrapper.properties 和 MavenWrapperDownloader.java 三個文件。另外和 .mvn 同層級的 mvnw 和 mvnw.cmd 兩個文件,是執(zhí)行 maven-wrapper.jar 的入口,mvnw 用于 Linux 或 macOS,mvnw.cmd 用于 Windows。
├──?.mvn?
│???└──?wrapper?
│???????├──?maven-wrapper.jar?
│???????└──?maven-wrapper.properties?
│???????└──?MavenWrapperDownloader.java
├──?mvnw?
└──?mvnw.cmd
那么為什么要用 wrapper,而不用原生的 maven 方式呢?以下這個圖應(yīng)該可以給你講清楚!

我們發(fā)現(xiàn)和傳統(tǒng) maven 的使用方式相比, maven-wrapper 每次更換版本要少操作一步(圖中標紅箭頭),只需要更新配置文件(maven-wrapper.properties )中的 distributionUrl 為目標版本即可。不過也有代價,就是首次下載 maven 包的時候,要單獨下載 wrapper(圖中藍色區(qū)塊),但這是一勞永逸的事情。

簡單講,maven-wrapper 解決了應(yīng)用依賴的 Maven 版本手動切換的問題,達成自動更新的目標,提高了工作效率 。
src

src:Spring Boot 生成,存放應(yīng)用源代碼的文件目錄。
二級目錄 main存放程序?qū)嶋H執(zhí)行相關(guān)代碼, ?test 存放程序測試相關(guān)代碼。
三級目錄 java 存放后綴為 .java 的代碼文件,resources 存放靜態(tài)文件,模板文件,應(yīng)用配置文件等資源或配置類文件。java 目錄里邊就是一個個代碼包和代碼文件,CourseApplication 是整個應(yīng)用程序的啟動入口。
target

target:應(yīng)用構(gòu)建時生成,主要存放了源代碼編譯后的 class 文件,相關(guān)的配置文件以及打好的包文件等用于實際執(zhí)行的文件。
.gitignore

.gitignore:Spring Boot 生成,版本控制系統(tǒng) Git 的配置文件,表示忽略提交。該文件中,只要遵循相應(yīng)的語法,每一行可以指定一個忽略規(guī)則。
course.iml

course.iml:IntelliJ IDEA ?生成,IntelliJ IDEA 的工程配置文件。包含了當前工程的一些配置信息,比如模塊信息,Java 組件,Maven 組件等等以及一些模塊的路徑信息和依賴信息。
HELP.md

HELP.md:Spring Boot 生成,幫助文檔,提供了 Spring Boot相關(guān)文檔和教程。
mvnw 和 mvnw.cmd
mvnw 和 mvnw.cmd:Spring Boot 生成,和 .mvn 目錄下文件搭配使用,是執(zhí)行 mvnw 命令的入口。
pom.xml

pom.xml:Spring Boot 生成的項目對象模型文檔,主要描述了項目的 Maven 坐標和依賴關(guān)系等信息,是項目級別的配置文件。
好了,Spring Boot 應(yīng)用的目錄結(jié)構(gòu)介紹就到這里,如果對你也有用的話,可以給我點個贊,點個在看,也可以分享給身邊朋友,非常感謝讀者朋友。


