1. 程式人生 > >Maven系列(四)Maven熱部署

Maven系列(四)Maven熱部署

我所在的公司用的是GitLab.CI進行專案額持續整合
就是自己搭建一個整合平臺,開發者本地將程式碼通過Git push到伺服器端,伺服器自動編譯-打包-釋出等等,指令碼可自己編寫。
現有一個任務是將原先的專案釋出改成maven熱部署,也就是說釋出到tomcat中後,不需要重啟tomcat。

當我知道有這個功能的時候,內心是喜悅的,也明確了我今後要了解的只是
1、GitLab.CI 的原理
2、指令碼的編寫
3、maven熱部署


第三點,可以在網上查詢到很多資料;

第二點,原有的專案裡已經有寫好的指令碼,我在原先的基礎上加以修改就行了;

第一點,就是要了解GitLab.CI和要學習的東東;


通過網上查詢並結合自身的專案,maven熱部署的過程配置總結如下:

1、修改tomcat-user配置檔案;

2、修改pom配置檔案;

3、修改maven的setting配置檔案


修改user配置檔案一是為了管理員進入tomcat管理頁面並提高其安全性,二是為了在maven設定正確的使用者名稱;
找到tomcat-user配置檔案,放掉註釋,並修改,如下
<pre name="code" class="html"><role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="admin"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,admin,manager" />

重啟tomcat,進入tomcat伺服器根目錄,點選“manager app”輸入使用者名稱和密碼,成功進入管理頁面,說明第一步配置成功。在pom中加入下面配置       
<plugins>
            <!-- tomcat熱部署 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <configuration>
                    <url>http://localhost:8080/manager/text</url><!--地址為tomcat地址>
                    <server>tomcat</server>
                    <path>/webProject</path><!--部署成功後,可輸入localhost:8080/webProject進入專案-->
                    <username>tomcat</username><!--對應的使用者名稱-->
                    <password>tomcat</password><!--對應的密碼-->
                </configuration>
            </plugin>

</plugins>


配置maven的setting檔案,加入下面配置
<server>
       <id>test</id>
       <username>tomcat</username>
       <password>tomcat</password>
 </server>

如果上面pom中沒有配置使用者名稱和密碼,則使用setting裡的配置,如果有的話,就是用pom裡的配置(就近原則)

配置完記得要maven-update

最後來驗證一下:
啟動tomcat伺服器,保證裡面沒有釋出任何專案;
如果是eclipse,直接右鍵專案---run as ---maven bulid...輸入“tomcat:redeploy”
如果使用的是命令列,直接輸入“mvn tomcat:redeploy”

如圖


測試通過,輸入地址可以正常的訪問!

以上是本地的配置,遠端伺服器也是一樣,
修改url、修改tomcat的使用者名稱和密碼、修改ci指令碼,通過git上傳程式碼後
就會按照ci腳本里的命令來執行!測試也通過,唯一的不足就是“花費時間”,一個專案需要一兩分鐘
(都是這樣還是我這邊專案或指令碼有問題,希望指出~~~)

可能會遇到的問題
1、專案打包名稱的問題,有可能會報“can not found XXX.war包”
檢查一下pom裡配置專案名和打包後的報名是否一致;
2、出現“Cannot invoke Tomcat manager: Error writing to server
可能是tomcat6或7的問題
將pom裡的url改為
http://localhost/manager/text 或http://localhost/manager/html

這是我遇到的兩個問題和解決方法

對於GitLabCI,我要了解他的原理和學會編寫指令碼,並嘗試自己搭建一個整合環境~~~