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加入使用者以及許可權
2、apache-maven-3.0.5配置C:\Program Files\apache-maven-3.0.5\conf\settings.xml,為了讓maven可以訪問tomcat的許可權,所以需要把如上建立的使用者新增到settings.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>
3、工程目錄下的pom.xml檔案,加入build,並配置tomcat7的maven外掛,如下配置<servers> <!-- 配置tomcat-/manager/text 訪問許可權 --> <server> <id>tomcat</id> <username>admin</username> <password>admin</password> </server> </servers>
<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