Guide
First of all, why do you use MAVEN to manage projects, a direct reason is: I developed a Web project on my own computer, every time I deploy to the server, I have to go through the following steps:
- First package the project into a war package in eclipse
- Delete the original project folder on the server
cd/var/lib/tomcat7/webappssudo rm xxx.warsudo rm-rf XXX
- Upload the war package to the server, such as uploading
PSCP-PW "xxx" Xxx.war [Email protected]:/var/lib/tomcat7/webapps
- restart Tomcat
sudo Service tomcat7 Restart
Every time these steps, very annoying, and using MAVEN to manage it does not need these steps, directly in Eclipse configuration maven plug-in, and then use MAVEN from the deployment project, about how to automatically deploy a lot of online tutorials, see the following reference material, Once the deployment is successful, only one command is required to automatically deploy my Web project to the Tomcat server, and I typically use the following command:
MVN tomcat7:deploy-dmaven.test.skip=true
Where-dmaven.test.skip=true means to temporarily skip the compilation of the Test code (also available-dskiptests to skip the test phase), Maven.test.skip also controls the behavior of the Maven-compiler-plugin and maven-surefire-plugin two plug-ins, skipping compilation and skipping tests.
But for the first time to follow the tutorial always encounter a variety of problems, the following records I encountered in the deployment process of various issues and considerations, to provide reference significance.
MAVEN Usage Issues note
The Tomcat plugin in Maven config file Pom.xml is typically configured as follows:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <path>/test</path> <url>http://localhost:8080/manager/</url> <server>tomcat</server> </configuration></plugin>
The server inside needs to be configured in Maven config file settings.xml as follows:
<server> <id>tomcat</id> <username>admin</username> <password>123456</ Password></server>
The username and password here are typically the user name and password for the Tomcat server.
When you start running the automatic deployment command, be sure to start Tomcat first. Otherwise, the following error is reported:
[INFO] [INFO]---tomcat-maven-plugin:1.0:redeploy (default-cli) @ sshmj-frank---[INFO] deploying war to http://localhost:8080 /sshmj-frank [INFO]------------------------------------------------------------------------[INFO] BUILD FAILURE [I NFO]------------------------------------------------------------------------[INFO] Total time:9.630s [INFO] Finished At:tue 16:35:52 CST [INFO] Final memory:6m/15m [INFO]------------------------------------------- -----------------------------[ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.0:redeploy ( DEFAULT-CLI) on Project Sshmj-frank:cannot invoke Tomcat manager:connection refused:connect, [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 on the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
HTTP 403 Error
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat-maven-plugin: 1.1:deploy (default-cli) on project XXX: Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/html/deploy?path=XXX -> [Help 1]
Some people on the internet say there are two possible reasons for this problem:
1) If you are using Tomcat 7, you need to modify the URL address of the deployment in Pom.xml.
<url>http://localhost:8080/manager</url>
Switch
<url>http://localhost:8080/manager/text</url>
2) Tomcat User Rights assignment problem, need to have both Manager-gui and Manager-script permissions, such as forget to assign Manager-script permissions.
The correct conf/tomcat-users.xml configuration should be:
<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin” password="admin" roles="manager-gui, manager-script"/></tomcat-users>
But my problem is not the above two, my problem is the automatic deployment command is wrong, should be mvn tomcat7:deploy command, and I used to mvn tomcat:deploy command
"Application already exists at path" issue
When deployed to a tomcat server using the Tomcat7-maven-plugin plug-in, projects that already have the same name on the server cause
FAIL - Application already exists at path ...
The workaround is to add the parameter update when configuring the Tomcat7-maven-plugin plugin in the Pom.xml file
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0-SNAPSHOT</version> <configuration> <url>http://XXX:8080/manager/html</url> <server>tomcat</server> <username>admin</username> <password>12345</password> <path>/${finalName}</path> <update>true</update> </configuration></plugin>
"Web. XML which'll be ignored" issue
When you compile a project with Maven, it appears:
[warning] warning:selected war files include a web-inf/web.xml which would be ignored (Webxml attribute was missing from WA R task, or Ignorewebxml attribute is specified as ' true ')
The workaround is to add one of the following plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <packagingExcludes>WEB-INF/web.xml</packagingExcludes> </configuration></plugin>
Resources
- Automatically deploy Java Web Apps to the Tomcat server using MAVEN
- Maven Getting Started example (3): Automatically deployed to external Tomcat
- Maven Getting Started example (4): Automatically deploy Tomcat error exclusions
- FAQ in MAVEN Usage
Using MAVEN to automatically deploy Java Web projects to tomcat issues