讀古今文學網 > Maven實戰 > 14.5 Web資源過濾 >

14.5 Web資源過濾

14.3節介紹了如何開啟資源過濾,在Web項目中,資源文件同樣位於src/main/resources/目錄下,它們經處理後會位於WAR包的WEB-INF/classes目錄下,這也是Java代碼編譯打包後的目錄。也就是說,這類資源文件在打包過後位於應用程序的classpath中。Web項目中還有另外一類資源文件,默認它們的源碼位於src/main/webapp/目錄,經打包後位於WAR包的根目錄。例如,一個Web項目的css源碼文件在src/main/webapp/css/目錄,項目打包後可以在WAR包的css/目錄下找到對應的css文件。這一類資源文件稱做web資源文件,它們在打包過後不位於應用程序的classpath中。

與一般的資源文件一樣,web資源文件默認不會被過濾。開啟一般資源文件的過濾也不會影響到web資源文件。

不過有的時候,我們可能希望在構建項目的時候,為不同的客戶使用不一樣的資源文件(例如客戶的logo圖片不同,或者css主題不同)。這時可以在web資源文件中使用Maven屬性,例如用${client.logo}表示客戶的logo圖片,用${client.theme}表示客戶的css主題。然後使用profile分別定義這些Maven屬性的值,如代碼清單14-18所示。

代碼清單14-18 針對不同客戶web資源的profile

最後需要配置maven-war-plugin對src/main/webapp/這一web資源目錄開啟過濾,如代碼清單14-19所示。

代碼清單14-19 為web資源目錄src/main/webapp/開啟過濾

代碼清單14-19中聲明了web資源目錄src/main/webapp(這也是默認的web資源目錄),然後配置filtering開啟過濾,並且使用includes指定要過濾的文件,這裡是所有css和js文件。讀者可以模仿上述配置添加額外的web資源目錄,選擇是否開啟過濾,以及包含或者排除一些該目錄下的文件。

配置完成後,可以選擇激活某個profile進行構建,如mvn clean install-Pclinet-a,告訴web資源文件使用logo圖片a.jpg,使用css主題red。