1. 程式人生 > >使用maven deploy將專案熱部署到tomcat

使用maven deploy將專案熱部署到tomcat

開發過程中,maven專案可以先打包, 再把包放到tomcat釋出目錄下, 在重啟tomcat.  

環境 tomcat7+maven3,

本文實現如何mvn -deploy到tomcat釋出目錄, 並且無需重啟tomcat, 實現熱部署.(本文在eclipse中新建maven專案, 用不用eclipse跟本文主旨是沒有關係的.)

文中有大圖片, 閱讀時模糊, 建議用滑鼠左鍵按住,把圖片拖到瀏覽器新的視窗去看.

1.修改tomcat安裝目錄下的資料夾conf下的tomcat-users.xml

新增如下程式碼片段:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

驗證一下上面配置是否生效: 啟動tomcat,  可以找到tomcat安裝目錄下資料夾bin下的startup.bat, 雙擊之, 啟動tomcat.

瀏覽器輸入地址http://localhost:8080/,進入tomcat首頁.


點選上圖的Manager App,彈出登入, 需要輸入帳號和密碼.  輸入上面在tomcat-users.xml新增的使用者為admin, 密碼為password

進入到tomcat釋出應用的管理頁面(該頁面地址是(http://localhost:8080/manager/html),  這個頁面可以看到當前tomcat在執行那些應用. ↓↓


第一步完成,  保持tomcat執行,這個頁面先不要關掉.

2.配置maven.   找到maven安裝目錄下的conf資料夾的settings.xml

在<servers>節點中新增如下程式碼片段.  注意這裡的username和password節點值, 必須與第1步在tomcat-users.xml新增的使用者名稱,密碼一致.

<server>
	<id>tomcat7</id>
	<username>admin</username>
	<password>password</password>
</server>

3.eclilse中新建mavan專案



在工程的pom.xml檔案的<project>節點中新增如下程式碼片段:

<build>
	<finalName>mymvn</finalName>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.1</version>
			<configuration>
				<!-- 注意此處的url,它的值就是第一步中的tomcat釋出應用管理頁面地址 -->
				<url>http://localhost:8080/manager/html</url>
				<server>tomcat7</server> <!-- 此處的名字必須和setting.xml中配置的ID一致 -->
				<path>/mymvn</path> <!-- 此處的名字是專案釋出的工程名 -->
			</configuration>
		</plugin>
	</plugins>
</build>
4. 到此, 所有需要做的配置都ok了.

eclipse中, 右鍵專案名mymvn. 


maven命令是clean tomcat7:deploy  .  這裡注意tomcat是版本7,  那命令就是tomcat7:deploy(親驗正確可用) 

其他版本如tomcat6 是tomcat6:deploy(未親自驗證)


eclipse控制檯列印資訊如下表示


5. 回到第一步, 重新整理tomcat釋出應用管理頁面http://localhost:8080/manager/html, 可以看到mymvn專案


另開一個網頁,輸入http://localhost:8080/mymvn/,   可以訪問, 則說明mymvn專案已經成功釋出.


另外,如下圖, 也可以看到tomcat的應用釋出目錄下, 多了檔案mymvn.jar. 進一步說明maven釋出專案到tomcat了.