1. 程式人生 > >Maven自動部署war到Tomcat8

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>