1. 程式人生 > >IntelliJ IDEA匯出war包及Tomcat部署

IntelliJ IDEA匯出war包及Tomcat部署

IntelliJ IDEA匯出war包:

1)單擊最左下角的選項按鈕;

2)在右側彈出的maven projects選項展開Lifecycle/package,雙擊或點選上面的執行按鈕,即可;
3)預設會把打好的war包放在在target目錄下。

【注意】
預設情況下在IDEA maven專案中src原始碼下的xml等資原始檔,並不會在編譯的時候一塊打包進classes資料夾,而是直接捨棄掉。(如把mapper.xml及Analyzer詞典等檔案放在src/main/java目錄下的情況)

在IDEA有兩種方式解決:
1)建立src/main/resources資料夾,將xml等資原始檔放置到這個目錄中。maven工具預設在編譯的時候,會將resources資料夾中的資原始檔一塊打包進classes目錄中。

2)配置maven的pom檔案配置,在pom檔案中找到節點,新增下列程式碼:

<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打包時已經將需要的jar打到class目錄下,不再需要單獨導包。

3、修改tomcat目錄conf下的server.xml。
在中加入:

<Context path="/manager" docBase="manager" debug=“0" privileged="true"/>
  • path=“” 為部署後執行的url路徑,可直接設定path為“”,則根目錄直接開啟;
  • docBase為你的war的檔名。 第一次執行的時候,tomcat會自動解壓war,生成path指定名稱的網站。這裡docBase中的”manager”就表示war檔名稱為“manager.war”;
  • reloadable:如果設定為”true”,則表示當你修改jsp檔案後,不需要重啟伺服器就可以實現頁面顯示的同步.

4、完畢,通過bin/startup.sh啟動tomcat 即可。

【注意:在低記憶體的伺服器上,若要更新war包,最好先shutdown tomcat,否則直接替換war會載入大量的class到記憶體中,以致記憶體撐爆。】

【在1G的記憶體的免費版ES2,發現該問題,每次都需要重啟例項,多麼痛的領悟】

前端靜態資源快取的問題

若在新版本若修改了js,css等靜態資源,在釋出新版本時,一般通過war包進行替換,但在Chrome等瀏覽器中還快取之前的靜態資源,如不清除,則還使用之前的資原始檔,就會出現資源訪問錯誤。

一般可通過對js,css等靜態資原始檔變更檔名來解決。
如淘寶:cssjs的引入是通過他們的CDN分散式形式,而且後面帶有?t=20150105。作用:標註版本號;用隨機數防止快取。

對於上傳的圖片等靜態資源的儲存
1)千萬不要將儲存路徑放置於執行環境下,應使用一個單獨的絕對路徑。(在發新的war包會將原執行環境的下目錄都替換掉,若圖片儲存在執行環境下則會被清掉)

2)使用虛擬目錄對映來解決請求的url與靜態資源的對映。即將圖片檔案存放於一個單獨的目錄內,配置請求的url與該目錄的對映關係,使在訪問圖片資源時自動從該獨立的目錄下去訪問。

【注意:目錄的路徑是從根目錄下的絕對路徑,即保證能在任何目錄都能直接使用cd命令開啟的路徑】

【若使用ngnix來控制靜態資源的訪問,則可以跳過!】

3)在tomcat/conf/server.xml中配置

<Context path="/" docBase="FBlog" debug="0" privileged="true"/>
       <Context path="/uploads" docBase="///custom_file/uploads" reloadable=“false"/>

或者在spring-mvc.xml配置檔案中使用

<!-- 處理獨立的資源目錄虛擬路徑對映 -->
<mvc:resources mapping="/post/**" location="file:///custom_file/uploads/"/>