IntelliJ IDEA導(dǎo)出war包:
1)單擊最左下角的選項(xiàng)按鈕;
2)在右側(cè)彈出的maven projects選項(xiàng)展開Lifecycle/package,雙擊或點(diǎn)擊上面的執(zhí)行按鈕,即可;
3)默認(rèn)會(huì)把打好的war包放在在target目錄下。
【注意】
默認(rèn)情況下在IDEA maven項(xiàng)目中src源代碼下的xml等資源文件,并不會(huì)在編譯的時(shí)候一塊打包進(jìn)classes文件夾,而是直接舍棄掉。(如把mapper.xml及Analyzer詞典等文件放在src/main/java目錄下的情況)
在IDEA有兩種方式解決:
1)建立src/main/resources文件夾,將xml等資源文件放置到這個(gè)目錄中。maven工具默認(rèn)在編譯的時(shí)候,會(huì)將resources文件夾中的資源文件一塊打包進(jìn)classes目錄中。
2)配置maven的pom文件配置,在pom文件中找到<build>節(jié)點(diǎn),添加下列代碼:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
在Tomcat中部署war:
1、將war文件拷貝到tomcat目錄webapps下(不要再建目錄)。
2、將必要的jar文件拷貝到tomcat目錄libxia下。 maven打包時(shí)已經(jīng)將需要的jar打到class目錄下,不再需要單獨(dú)導(dǎo)包。
3、修改tomcat目錄conf下的server.xml。
在<Host></Host>中加入:
<Context path="/manager" docBase="manager" debug=“0" privileged="true"/>
- path=“" 為部署后運(yùn)行的url路徑,可直接設(shè)定path為“”,則根目錄直接打開;
- docBase為你的war的文件名。 第一次運(yùn)行的時(shí)候,tomcat會(huì)自動(dòng)解壓war,生成path指定名稱的網(wǎng)站。這里docBase中的”manager”就表示war文件名稱為“manager.war”;
- reloadable:如果設(shè)置為"true",則表示當(dāng)你修改jsp文件后,不需要重啟服務(wù)器就可以實(shí)現(xiàn)頁(yè)面顯示的同步.
4、完畢,通過bin/startup.sh啟動(dòng)tomcat 即可。
【注意:在低內(nèi)存的服務(wù)器上,若要更新war包,最好先shutdown tomcat,否則直接替換war會(huì)加載大量的class到內(nèi)存中,以致內(nèi)存撐爆?!?/p>
【在1G的內(nèi)存的免費(fèi)版ES2,發(fā)現(xiàn)該問題,每次都需要重啟實(shí)例,多么痛的領(lǐng)悟】
前端靜態(tài)資源緩存的問題
若在新版本若修改了js,css等靜態(tài)資源,在發(fā)布新版本時(shí),一般通過war包進(jìn)行替換,但在Chrome等瀏覽器中還緩存之前的靜態(tài)資源,如不清除,則還使用之前的資源文件,就會(huì)出現(xiàn)資源訪問錯(cuò)誤。
一般可通過對(duì)js,css等靜態(tài)資源文件變更文件名來解決。
如淘寶:cssjs的引入是通過他們的CDN分布式形式,而且后面帶有?t=20150105。作用:標(biāo)注版本號(hào);用隨機(jī)數(shù)防止緩存。
對(duì)于上傳的圖片等靜態(tài)資源的保存
1)千萬不要將保存路徑放置于運(yùn)行環(huán)境下,應(yīng)使用一個(gè)單獨(dú)的絕對(duì)路徑。(在發(fā)新的war包會(huì)將原運(yùn)行環(huán)境的下目錄都替換掉,若圖片保存在運(yùn)行環(huán)境下則會(huì)被清掉)
2)使用虛擬目錄映射來解決請(qǐng)求的url與靜態(tài)資源的映射。即將圖片文件存放于一個(gè)單獨(dú)的目錄內(nèi),配置請(qǐng)求的url與該目錄的映射關(guān)系,使在訪問圖片資源時(shí)自動(dòng)從該獨(dú)立的目錄下去訪問。
【注意:目錄的路徑是從根目錄下的絕對(duì)路徑,即保證能在任何目錄都能直接使用cd命令打開的路徑】
【若使用ngnix來控制靜態(tài)資源的訪問,則可以跳過!】
3)在tomcat/conf/server.xml中配置
<Context path="/" docBase="FBlog" debug="0" privileged="true"/>
<Context path="/uploads" docBase="http:///custom_file/uploads" reloadable=“false"/>
或者在spring-mvc.xml配置文件中使用
<!-- 處理獨(dú)立的資源目錄虛擬路徑映射 -->
<mvc:resources mapping="/post/**" location="file:///custom_file/uploads/"/>