1. 程式人生 > >STS下web專案的目錄結構講解

STS下web專案的目錄結構講解

前言:之前看書的時候一直沒搞懂STS下web專案的結構是啥樣的,有main,resources,甚至在src下還有個src目錄,就很奇怪,正好導師給了個基於SSM框架的比較初級的web小專案讓我改改,拿到之後就順便研究了一下這個目錄結構。

                                     第一章 專案的總體概況

目錄結構大概如下圖。

 專案的所在位置為D:\frameio\code\trunck下名為frameio

          第二章 STS中的web開發目錄與對應的工作空間下的開發目錄

1. src/main/java下的裝的是專案的原始碼,包括web層service層以及dao層的程式碼。

 在STS的工作空間中的開發目錄,與web開發目錄吻合。

2. src/main/resources下裝的是專案的配置檔案

在STS的工作空間中的開發目錄,與web開發目錄吻合。

3. src/test/java下裝的應該是一些測試檔案,這裡我們並沒有寫,只有個系統自動生成的。

 在STS的工作空間中的開發目錄,與web開發目錄吻合。

4.我們暫時跳過code目錄,先看doc目錄

doc文件下裝的是一些關於資料的東西,這個應該是類似於幫助文件,自己的配的。

在STS的工作空間中的開發目錄,與web開發目錄吻合。

5.接下來還有一個src目錄,打開發現這個目錄下裝的是一些前端頁面之類的東西。

在STS的工作空間中的開發目錄,與web開發目錄吻合。

5.target目錄

直接一看,這個目錄下好像裝著一些奇怪的東西,我們看一下工作空間中的目錄。

在STS的工作空間中的開發目錄,與web開發目錄吻合。

但是工作空間的目錄中還裝著兩個web開發目錄中沒顯示的東西。

可以看到專案中還多了兩個classes,點進去發現是各個檔案的class(位元組碼)檔案。

其中src/test/java下的類檔案會編譯在test-classes中,如下圖。 觀察發現,這個編譯的目錄結構與源目錄有所不同,沒有src/test/java這個檔案結構,而是直接編譯src/test/java下的檔案,目錄結構也是從其下的包處開始的。

 其中src/main/java,src/main/resources下的檔案都會編譯進去,包括xml與properties檔案,也是失去了之前的三層目錄比如src/main/java,src/main/resources,直接其下的目錄開始編譯,具體看如下對比。

                                                       

 src/main/webapp,這些前端的指令碼、CSS等資源什麼的並沒有編譯進去,可能與js、css不需要編譯有關係,但是我記著jsp好像要編譯,這個留得繼續查詢答案。

6 code檔案與target下的m2e-wtp檔案

                          

這個還沒弄清楚,專案緊急,先留著,因為並不影響開發,不過推測一下,code檔案可能和svn有關係,莫名其妙跑出來的,之前亂配了一通svn,這個東西好像貌似就有了,有點忘了,至於target下的m2e-wtp檔案,可能跟專案在伺服器上釋出後,web專案檔案下的META-INF有關係,具體可見下圖。

                               第三章 專案在tomcat上釋出後的目錄

1. 專案通過tomcat釋出後,在webapps下的目錄結構,可以和上文中提到的src/main/webapp目錄做對比。

可以看到,STS把src/main/webapp下的東西直接照搬進了D:\apache-tomcat-8.0.53\webapps\frame中。

2. 開啟WEB-INF,發現多了一個classes檔案,對比發現,STS把target/classes下的編譯檔案照搬進了D:\apache-tomcat-8.0.53\webapps\frame\WEB-INF中。

3. 繼續觀察D:\apache-tomcat-8.0.53\webapps\frame下的檔案,發現其下的META-INF檔案與之前target/m2e-wtp/webresources下的META-INF一樣,大膽推測一下,應該也是從target中把這個搬進來了。

                                               第四章 總結

STS下web專案的目錄與STS的工作空間裡web專案的目錄基本一致,編譯的檔案會放到target/classes中,並不會在在STS中進行顯示,編譯的檔案的目錄就是按包目錄來的,沒有src/main/*,那些STS給你新增的東西。

有兩個src,第二個src主要是儲存前端的一些東西。當把web專案釋出到tomcat上時,會把第二個src下的webapp裡的WEB-INF複製到tomcat的專案釋出目錄中,並把target目錄下儲存編譯檔案的classes檔案複製到WEB-INF中,至於tomcat的專案釋出目錄中的META-INF,應該是target/m2e-wtp/webresources下的那個WEB-INF。