1. 程式人生 > >maven打war包到指定目錄下和tomcat下

maven打war包到指定目錄下和tomcat下

一、maven打war包到指定目錄下

初步解決方法:

maven中更改target目錄可以用<build>子目錄<directory>,但是<directory>只能是相對於當前專案的目錄,

雖然也能將war包打到專案外的目錄下面,但是專案下會出現一個奇怪的很深的目錄,有點不合適所以使用下面的外掛來實現。

使用maven-dependency-plugin外掛將war包打到指定的路徑下:

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
				<!--指定web.xml的路徑  -->
					<webXml>WebRoot\WEB-INF\web.xml</webXml>
					<!--指定jsp、js、css的路勁  -->
					<warSourceDirectory>WebRoot</warSourceDirectory>
				</configuration>
			</plugin>
			<!--打war包到指定的目錄下 --> 
			<plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-dependency-plugin</artifactId>  
                <version>2.8</version>  
                <executions>  
                    <execution>  
                        <id>copy-war</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>copy</goal>  
                        </goals>  
                        <configuration>  
                            <artifactItems>  
                                <artifactItem>  
                                    <groupId>${project.groupId}</groupId>  
                                    <artifactId>${project.artifactId}</artifactId>  
                                    <version>${project.version}</version>  
                                    <type>${project.packaging}</type>  
                                </artifactItem>  
                            </artifactItems>  
                          <!--   <outputDirectory>${dist.console.war.dir}</outputDirectory>   -->
                          <!--指定war包儲存地址-->
                            <outputDirectory>D:\Javaee\mypackage</outputDirectory>  
                            <includes>   
                                <include>*.war</include>   
                            </includes>  
                        </configuration>  
                    </execution>  
                </executions>  
            </plugin>
		</plugins>
	</build>

二、專案打包到tomcat下

環境:apache-maven-3.0.5、apache-tomcat-7.0.39

配置流程如下:

1、 apache-tomcat-7.0.39配置C:\Program Files\apache-tomcat-7.0.39\conf\tomcat-users.xml,因為tomcat7預設情況下沒有配置manager訪問許可權,所以這裡需要在tomcat-users.xml加入使用者以及許可權

<tomcat-users>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
</tomcat-users>
2、apache-maven-3.0.5配置C:\Program Files\apache-maven-3.0.5\conf\settings.xml,為了讓maven可以訪問tomcat的許可權,所以需要把如上建立的使用者新增到settings.xml中,如下
<servers>
    <!-- 配置tomcat-/manager/text 訪問許可權 -->
    <server>
      <id>tomcat</id>
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>
3、工程目錄下的pom.xml檔案,加入build,並配置tomcat7的maven外掛,如下配置
<build>
        <finalName>myApp</finalName>
        <!-- directory預設情況下指向target --> 
        <!--<directory>${basedir}/target</directory>-->
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <url>http://localhost:8080/manager/text</url>
                    <!-- server、username、password對應maven的setting下的配置 -->
                    <server>tomcat</server>
                    <username>admin</username>
                    <password>admin</password>
                    <path>/${project.build.finalName}</path>
                    <!-- war檔案路徑預設情況下指向target -->
                    <!--<warFile>${basedir}/target/${project.build.finalName}.war</warFile>-->
                </configuration>
            </plugin>
        </plugins>
    </build>
 ${project.build.finalName}這個是根據xml的路徑來標記的

ok 到這裡配置結束了,下面看這麼打包到tomcat下:

命令部署:

1、在部署之前,必須先啟動tomcat7服務,C:\Program Files\apache-tomcat-7.0.39\bin\startup.bat

  找到要部署的工程檔案根目錄下,執行如下maven命令

  > mvn clean:install             //clean是清理輸出檔案,install編譯打包,在每次打包之前必須執行clean,才能保證釋出為最新檔案

  > mvn tomcat7:redeploy    //第一次釋出 tomcat7:deploy,再次釋出 tomcat7:redeploy


2、錯誤問題

Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/deploy?path=%2FmyApp&war=


如上問題,有如下兩個原因:

  A、由於maven沒有許可權訪問http://localhost:8080/manager/text,所以需要在apache-tomcat下的tomcat-users.xml增加使用者許可權,並配置於maven的setting檔案中

  B、由於maven-tomcat外掛問題,通過http://search.maven.org/搜尋tomcat-maven-plugin,發現最新版本之後,最後執行> mvn tomcat:redeploy,一直都會顯示上面這個報錯,這裡如果是tomcat7,建議直接通過http://search.maven.org/搜尋tomcat7-maven-plugin外掛,執行> mvn tomcat7:redeploy,這樣就部署成功了;如果tomcat6就直接通過http://search.maven.org/搜尋tomcat6-maven-plugin

  所以這裡需要注意tomcat7-maven-plugin外掛的引入,正確引入將解決以上問題

  <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>

  >  mvn tomcat7:redeploy
  即可完成部署

maven打包部署到tomcat下文章來自:

http://www.cnblogs.com/candle806/p/3785708.html

http://www.yiibai.com/maven/deploy-maven-based-war-file-to-tomcat.html