使用maven的自動部署功能可以很方便的將maven工程自動部署到遠程tomcat服務器,節省了大量時間。
本文章適用于tomcat的7.x ,8.x, 9.x版本。
下面是自動部的步驟
1,首先,配置tomcat的manager
編輯遠程tomcat服務器下的conf/tomcat-users.xml,在末尾增加(其實只要拉到文件末尾,去掉注釋改一下就可以了)
<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改為自己的密碼,注意對于tomcat9來說,不能同時賦予用戶manager-script和manager-gui角色。
保存tomcat-users.xml。
在tomcat服務器的conf/Catalina/localhost/目錄下創建一個manager.xml文件,寫入如下值:
<?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,此時會彈出要求輸入用戶名和密碼對話框,輸入manager-gui對應的用戶和密碼登錄管理控制臺(其中serverip為服務器ip,如果服務器在本地就是localhost或者127.0.0.1,端口為tomcat端口,默認8080)。以此確認manager是否配置正確。正確結果示例如下:
2,在maven項目中添加配置
在pom.xml文件中,在plugins節點下添加如下plugin節點
<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服務器的ip和端口。密碼換成上面配置的manager-script角色的密碼。path改為項目在tomcat服務器中的部署路徑。
然后進行部署,如果是第一次部署,運行mvn tomcat7:deploy進行自動部署(對于tomcat8,9,也是使用tomcat7命令),如果是更新了代碼后重新部署更新,運行mvn tomcat7:redeploy,如果第一次部署使用mvn tomcat7:redeploy,則只會執行上傳war文件,服務器不會自動解壓部署。如果路徑在tomcat服務器中已存在并且使用mvn tomcat7:deploy命令的話,上面的配置中一定要配置<update>true</update>,不然會報錯。
如果IDE是eclipse,就在runas->run configurations中配置一個maven build,intellij類似。
3. 內存泄漏
使用上面的方法進行部署后會出現嚴重的內存泄漏現象。tomcat的manager提供了診斷在部署時是否產生內存泄漏的功能,在上面提到的http://serverip:port/manager/html這個頁面底部有一個“Find leaks”的按鈕,如下:
新聞熱點
疑難解答