maven tomcat plugin實現熱部署

來源:互聯網
上載者:User

標籤:maven   tomcat   plugins   eclipse   java   

前言:

此處的方法適用於tomcat6 和 tomcat7,對於最新的tomcat8還沒有進行過測試,有興趣的同學可以自己測一下.

總共分為五步:

1.在tomcat中配置使用者權限,即添加管理員帳號

2.在maven中添加server,配置tomcat的管理員帳號密碼

3.在project中添加外掛程式,以及maven中配置的server,

4.設定部署命令

5.進行部署

附相關錯誤及解決辦法

下面進行分步驟講解:

一.在tomcat中配置使用者權限,即添加管理員帳號.

我們需要實現熱部署,自然就需要通過maven操作tomcat,所以就需要maven取得操作tomcat的許可權,現在這一步就是配置tomcat的可操作許可權.

在tomcat的安裝目錄下,修改conf / tomcat-user.xml檔案,在<tomcat-users> 節點下面增加如下配置:

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


二.在maven中添加server,配置tomcat的管理員帳號密碼

現在tomcat開啟了許可權,maven既然要操作tomcat,那麼maven就要拿到tomcat的管理員帳號和密碼才能夠使用.

在maven的安裝目錄下,修改conf / setting.xml檔案.在<server> 節點下面增加如下配置:

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


三.在project中添加外掛程式,以及maven中配置的server,

現在maven已經擁有操作tomcat的許可權了,但是這兩者之間想要通訊的話還需要一個橋樑,那就是在maven中配置tomcat外掛程式.

修改項目的pom.xml檔案,在<build> 節點下面增加如下配置:

<plugins><!-- 第一種方式: apache官方tomcat外掛程式,支援deploy --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.0-SNAPSHOT</version><configuration><url>http://localhost:8080/manager/text</url><server>admin</server></configuration></plugin><!-- 第二種方式: 第三方tomcat外掛程式,支援redeploy --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><version>1.1</version><configuration><url>http://localhost:8080/manager/text</url><server>admin</server><ignorePackaging>true</ignorePackaging></configuration></plugin></plugins>
對於以上外掛程式,網上有兩種,經過測試都是可以用的,但是注意,以上的配置只能用於tomcat7,如果要用tomcat6的話,需要配置成如下方式:

<plugins><!-- apache官方tomcat外掛程式,支援deploy --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat6-maven-plugin</artifactId><version>2.0-SNAPSHOT</version><configuration><url>http://localhost:8080/manager/html</url><server>admin</server></configuration></plugin><!-- 第三方tomcat外掛程式,支援redeploy --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><version>1.1</version><configuration><url>http://localhost:8080/manager</url><server>admin</server><ignorePackaging>true</ignorePackaging></configuration></plugin></plugins>
不論是tomcat7還是tomcat6,只要用到其中一種外掛程式就行了.但是這兩種外掛程式還是有區別的:

第一種是apache官方的外掛程式,支援deploy命令,如果已經部署到tomcat容器,第二次部署的時候就會報錯,提示該項目已經部署.

第二種是第三方的外掛程式,可以使用redeploy命令,可以重複部署
同時,請在<project>節點下增加倉庫配置,不然可能外掛程式找不到,導致報錯:

<repositories><repository><id>people.apache.snapshots</id><url>http://repository.apache.org/content/groups/snapshots-group/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>apache.snapshots</id><name>Apache Snapshots</name><url>http://repository.apache.org/content/groups/snapshots-group/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories>



四.設定部署命令

一般使用搜是在eclipse中,可以右鍵點擊需要部署的項目,Run as -> Run configurations -> maven build -> 右鍵 new,這樣配置一個新的maven命令

具體配置命令方法:

1.在base directory中選擇自己的項目

2.Goals的配置

如果使用apache的官方外掛程式,那麼就用 "tomcat7:deploy" 命令

如果使用第三方外掛程式,那麼就用 "tomcat:redeploy"命令


五.進行部署

右鍵自己的項目,Run as -> Maven build即可.

注:

有些同學不習慣使用IDE,那麼在命令列中使用maven實現部署也是一樣的.

通過命令列進入到自己的專案檔夾下,使用mvn命令,例如: mvn tomcat7:deploy


附相關錯誤及解決辦法:

1.Connection refused錯誤
報錯資訊如下:
[ERROR]Failed to execute goal org.apache.tomcat.maven: tomcat7-maven-plugin: 2.0- SNAPSHOT: deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]
原因:未啟動Tomcat伺服器
解決辦法:先啟動Tomcat伺服器再選擇Run


2. 401錯誤
報錯資訊如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]
原因:許可權問題
解決辦法在$CATALINA_BASE/conf/tomcat-users.xml,
如D:\apache-tomcat-7.0.34\conf\tomcat-users.xml檔案中添加許可權
<role rolename=”manager”/>
<user username=”admin” password=”admin” roles=”manager”/>
修改pom.xml檔案,在<configuration>  </configuration>中添加
<username>admin</username>  <password>admin</password>


3.403錯誤
報錯資訊如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/html/deploy?path=%2Fhelloworld -> [Help 1]
原因:產生該問題有可能因為兩個原因,具體參見解決辦法
解決辦法:
1)如果使用的是Tomcat 7,需要修改pom.xml中部署的url地址,將<url>http://localhost:8080/manager</url>改<url>http://localhost:8080/manager/text</url>
2)給tomcat使用者權限分配上,需要同時具備manager-gui和manager-script許可權,我在遇到該問題時,就是忘了分配manager-script許可權。
正確的conf/tomcat-users.xml配置應為:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin” password="admin" roles="manager-gui, manager-script"/>
</tomcat-users>



maven tomcat plugin實現熱部署

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.