Maven自動部署war到Tomcat8
原文:http://www.cnblogs.com/yucongblog/p/5392932.html
我使用的環境是:Eclipse Java EE IDE for Web Developers(Version: Luna Service Release 2 (4.4.2))
apache-tomcat-8.0.32
apache-maven-3.3.9
實戰過程如下:
第一步:配置Tomcat訪問許可權
要開啟tomcat的manager功能;
在conf資料夾下的tomcat-users.xml的<tomcat-users>標籤內新增如下內容
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user password="123456" username="admin" roles="manager-gui,manager-script,manager-jmx,manager-status" />
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user password="123456" username="admin" roles="manager-gui,manager-script,manager-jmx,manager-status" />
輸入配置的使用者名稱(admin)和密碼(123456)看是否可以登入,如果可以進下一步
第二步:配置maven的setting.xml
在conf/setting.xml檔案中的標籤<servers>新增子標籤
<server> <id>tomcat8</id> <username>admin</username> <password>123456</password> </server>
注意,這裡配置的username和password一定要和tomcat中的tomcat_user.xml中一致。
第三步:配置pom.xml
在pom.xml中新增如下程式碼,在標籤<project>下新增子標籤
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 遠端tomcat下manager路徑 --> <url>http://localhost:8080/manager/text</url> <server>tomcat8</server> </configuration> </plugin> </plugins> </build>
以上幾步完成以後就可以執行mvn命令了,如下操作:
(1) mvn clean install
(2) mvn tomcat7:deploy (第一次部署執行)
(3) mvn tomcat7:redeploy(第二次部署是執行)
注意:第一次釋出是執行(2),已經發布了,需要重新發布執行(3)。
通過以上操作就可以通過maven把專案自動部署到tomcat了。
在Maven與Tomcat配合部署過程中,最常見的錯誤有三種,以及相應的完美解決辦法
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.2: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-8.0.20\conf\tomcat-users.xml檔案中新增許可權
<role rolename=”manager”/> <user username=”admin” password=”123456” roles=”manager”/>
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="123456" roles="manager-gui, manager-script"/> </tomcat-users>