Spring Boot 項目的這些文件都是干啥用的?
本文我們了解下 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)用

乍一看,內(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)如下:

dot_mvn_dir
可以看到,該文件目錄包含了 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)系等信息,是項目級別的配置文件。
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號
好文章,我在看??
