讀古今文學網 > Maven實戰 > 12.1 Web項目的目錄結構 >

12.1 Web項目的目錄結構

我們都知道,基於Java的Web應用,其標準的打包方式是WAR。WAR與JAR類似,只不過它可以包含更多的內容,如JSP文件、Servlet、Java類、web.xml配置文件、依賴JAR包、靜態web資源(如HTML、CSS、JavaScript文件)等。一個典型的WAR文件會有如下目錄結構:

一個WAR包下至少包含兩個子目錄:META-INF和WEB-INF。前者包含了一些打包元數據信息,我們一般不去關心;後者是WAR包的核心,WEB-INF下必須包含一個Web資源表述文件web.xml,它的子目錄classes包含所有該Web項目的類,而另一個子目錄lib則包含所有該Web項目的依賴JAR包,classes和lib目錄都會在運行的時候被加入到Classpath中。除了META-INF和WEB-INF外,一般的WAR包都會包含很多Web資源,例如你往往可以在WAR包的根目錄下看到很多html或者jsp文件。此外,還能看到一些文件夾如img、css和js,它們會包含對應的文件供頁面使用。

同任何其他Maven項目一樣,Maven對Web項目的佈局結構也有一個通用的約定。不過首先要記住的是,用戶必須為Web項目顯式指定打包方式為war,如代碼清單12-1所示。

代碼清單12-1 顯式指定Web項目的打包方式為war

如果不顯式地指定packaging,Maven會使用默認的jar打包方式,從而導致無法正確打包Web項目。

Web項目的類及資源文件同一般JAR項目一樣,默認位置都是src/main/java/和src/main/resources,測試類及測試資源文件的默認位置是src/test/java/和src/test/resources/。Web項目比較特殊的地方在於:它還有一個Web資源目錄,其默認位置是src/main/webapp/。一個典型的Web項目的Maven目錄結構如下:

在src/main/webapp/目錄下,必須包含一個子目錄WEB-INF,該子目錄還必須要包含web.xml文件。src/main/webapp目錄下的其他文件和目錄包括html、jsp、css、JavaScript等,它們與WAR包中的Web資源完全一致。

在使用Maven創建Web項目之前,必須首先理解這種Maven項目結構和WAR包結構的對應關係。有一點需要注意的是,WAR包中有一個lib目錄包含所有依賴JAR包,但Maven項目結構中沒有這樣一個目錄,這是因為依賴都配置在POM中,Maven在用WAR方式打包的時候會根據POM的配置從本地倉庫複製相應的JAR文件。