使用maven的自動(dòng)部署功能可以很方便的將maven工程自動(dòng)部署到遠(yuǎn)程tomcat服務(wù)器,節(jié)省了大量時(shí)間。
本文章適用于tomcat的7.x ,8.x, 9.x版本。
下面是自動(dòng)部的步驟
1,首先,配置tomcat的manager
編輯遠(yuǎn)程tomcat服務(wù)器下的conf/tomcat-users.xml,在末尾增加(其實(shí)只要拉到文件末尾,去掉注釋改一下就可以了)
<role rolename="manager-gui"/><role rolename="manager-script"/><user username="admin" password="password" roles="manager-script"/><user username="root" password="password" roles="manager-gui"/>
將上面的password改為自己的密碼,注意對(duì)于tomcat9來(lái)說(shuō),不能同時(shí)賦予用戶manager-script和manager-gui角色。
保存tomcat-users.xml。
在tomcat服務(wù)器的conf/Catalina/localhost/目錄下創(chuàng)建一個(gè)manager.xml文件,寫(xiě)入如下值:
<?xml version="1.0" encoding="UTF-8"?><Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>
保存退出。
然后在瀏覽器中輸入http://serverip:port/manager/html,此時(shí)會(huì)彈出要求輸入用戶名和密碼對(duì)話框,輸入manager-gui對(duì)應(yīng)的用戶和密碼登錄管理控制臺(tái)(其中serverip為服務(wù)器ip,如果服務(wù)器在本地就是localhost或者127.0.0.1,端口為tomcat端口,默認(rèn)8080)。以此確認(rèn)manager是否配置正確。正確結(jié)果示例如下:
2,在maven項(xiàng)目中添加配置
在pom.xml文件中,在plugins節(jié)點(diǎn)下添加如下plugin節(jié)點(diǎn)
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://serverip:port/manager/text</url> <username>admin</username> <password>password</password> <update>true</update> <path>/webapp</path> </configuration></plugin>
將上面的serverip和port換成自己tomcat服務(wù)器的ip和端口。密碼換成上面配置的manager-script角色的密碼。path改為項(xiàng)目在tomcat服務(wù)器中的部署路徑。
然后進(jìn)行部署,如果是第一次部署,運(yùn)行mvn tomcat7:deploy進(jìn)行自動(dòng)部署(對(duì)于tomcat8,9,也是使用tomcat7命令),如果是更新了代碼后重新部署更新,運(yùn)行mvn tomcat7:redeploy,如果第一次部署使用mvn tomcat7:redeploy,則只會(huì)執(zhí)行上傳war文件,服務(wù)器不會(huì)自動(dòng)解壓部署。如果路徑在tomcat服務(wù)器中已存在并且使用mvn tomcat7:deploy命令的話,上面的配置中一定要配置<update>true</update>,不然會(huì)報(bào)錯(cuò)。
如果IDE是eclipse,就在runas->run configurations中配置一個(gè)maven build,intellij類似。
3. 內(nèi)存泄漏
使用上面的方法進(jìn)行部署后會(huì)出現(xiàn)嚴(yán)重的內(nèi)存泄漏現(xiàn)象。tomcat的manager提供了診斷在部署時(shí)是否產(chǎn)生內(nèi)存泄漏的功能,在上面提到的http://serverip:port/manager/html這個(gè)頁(yè)面底部有一個(gè)“Find leaks”的按鈕,如下:
新聞熱點(diǎn)
疑難解答
圖片精選