1. 程式人生 > >Maven整合Tomcat外掛

Maven整合Tomcat外掛

目錄

類似外掛及版本區別:

Maven Tomcat外掛現在主要有兩個版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同。

tomcat-maven-plugin 外掛官網:http://mojo.codehaus.org/tomcat-maven-plugin/plugin-info.html

tomcat7-maven-plugin 外掛官網:http://tomcat.apache.org/maven-plugin.html

tomcat-maven-plugin這個外掛是老版本,不知道是被apache收購還是怎麼的,現在已經停用,命令是mvn tomcat:run,而且該外掛應該也不支援tomcat7

Apache內部這個外掛現在也有兩個版本,分別是tomcat6,tomcat7

tomcat6:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://127.0.0.1:8080/manager</url>
        <server>tomcat</server>
        <username>admin</username> 
        <password>admin</password>
        <path>/dev_web</path><!--WEB應用上下文路徑-->
        <contextReloadable>true</contextReloadable>
    </configuration>
</plugin>

tomcat7:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>http://127.0.0.1:8080/manager</url>
        <server>tomcat</server>
        <username>admin</username> 
        <password>admin</password>
        <path>/dev_web</path><!--WEB應用上下文路徑-->
        <contextReloadable>true</contextReloadable>
    </configuration>
</plugin>

下面的篇幅中就只討論tomcat7

本地執行,啟動嵌入式tomcat:

<plugin>   
  <groupId>org.apache.tomcat.maven</groupId>   
  <artifactId>tomcat7-maven-plugin</artifactId>   
  <version>2.2</version>   
  <configuration>      
    <hostName>127.0.0.1</hostName>        <!--   Default: localhost -->  
    <port>8080</port>                     <!-- 啟動埠 Default:8080 --> 
    <path>/${project.artifactId}</path>   <!-- 訪問應用路徑  Default: /${project.artifactId}-->  
    <uriEncoding>UTF-8</uriEncoding>      <!-- uri編碼 Default: ISO-8859-1 -->
  </configuration>
</plugin>

如果在啟動執行過程中報異常:

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on project springdemo-list: Could not start Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

那麼一般就是

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

這個依賴包新增scope為provided就可以

意思是這個servlet-api的依賴包只在編譯和測試時使用而不在執行時使用;因為web容器自身一般都會帶這些依賴包,故配置上scope。假如不配置此項,啟動tomcat時出現上述的異常,個人認為是由於我們自己在pom.xml引入的依賴跟web容器自己的一些依賴包衝突導致。

遠端部署:

專案中的pom.xml配置:

<!-- Tomcat 自動部署 plugin -->
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <!-- 對應的 tomcat manager的介面-->
        <url>http://127.0.0.1:8080/manager/text</url>
        <!-- setting.xml 的server id-->
        <server>tomcat</server>
        <!-- tomcat-user.xml 的 username -->
        <username>admin</username>
        <!-- tomcat-user,xml 的 password -->
        <password>admin</password>
        <!-- web專案的專案名稱-->
        <path>/${project.artifactId}</path>
        <uriEncoding>UTF-8</uriEncoding>
        <!-- 若tomcat專案中已存在,且使"mvn tomcat7:deploy"命令必須要設定下面的程式碼 -->
        <!-- 更新專案時,僅需要執行"mvn tomcat7:redeploy"命令即可 -->
        <!-- 上述命令無論伺服器是tomcat7、8或9,均是使用"mvn tomcat7:deploy"或"mvn tomcat7:redeploy" -->
        <update>true</update>
    </configuration>
</plugin>

url:打包好的包通過這個url上傳到tomcat處

path:這裡如果設定/,預設就是ROOT,最好設定為專案名稱,這樣可以在一個埠下部署多個專案

Tomcat中的tomcat-users.xml配置:

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

注意tomcat一定要重啟才會生效

Maven中的settings.xml配置:

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

注意事項:

tomcat一定要啟動才能部署專案

Tomcat外掛命令:

tomcat7:deploy --部署web war包
tomcat7:redeploy --重新部署web war包
tomcat7:undeploy --停止該專案執行,並刪除部署的war包
tomcat7:run --啟動嵌入式tomcat ,並運行當前專案
tomcat7:exec-war --建立一個可執行的jar檔案,允許使用java -jar mywebapp.jar 執行web專案
tomcat7:help --在tomcat7-maven-plugin顯示幫助資訊

參考:

Maven 整合Tomcat外掛

tomcat7:run

使用maven的tomcat外掛部署專案

maven 外掛系列1 :tomcat外掛 整合