Deploy maven war-project to tomcat
With maven it’s possible to deploy the current version of your webapplication (<packaging>war</packaging>) with one command!
mvn clean package tomcat:deploy-only
All we have to to is to define the tomcat-maven-plugin:
...
<packaging>war</packaging>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://server[:port]/manager</url>
<path>/${project.build.finalName}</path>
<update>true</update>
<server>tomcat_xyz</server>
</configuration>
</plugin>
You have to define username/password in your settings.xml:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>tomcat_xyz</id> <username>admin</username> <password>123geheim</password> </server> </servers> </settings>
Check the tomcat-user.xml:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <role rolename="admin"/> <user username="admin" password="123geheim" roles="admin,manager"/> </tomcat-users>
If you run the maven command you will see:
[INFO] [tomcat:deploy-only {execution: default-cli}]
[INFO] Deploying war to http://server:8080/foobar-1.0.0-SNAPSHOT-B20090710
[INFO] OK - Deployed application at context path /foobar-1.0.0-SNAPSHOT-B20090710
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
To get the version and a buildnumber in the context-path you must define the finalName and you must use a “buildnumber-plugin”, e.g. buildnumber-maven-plugin or maven-timestamp-plugin:
<build>
<finalName>foobar-${project.version}-B${buildNumber}</finalName>
</build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<id>create-buildnumber</id>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doUpdate>false</doUpdate>
<doCheck>false</doCheck>
<format>{0,date,yyyyMMdd}</format>
<items>
<item>timestamp</item>
</items>
<buildNumberPropertyName>buildNumber</buildNumberPropertyName>
</configuration>
</plugin>
<plugin> <groupId>com.keyboardsamurais.maven</groupId> <artifactId>maven-timestamp-plugin</artifactId> <executions> <execution> <id>create-buildnumber</id> <goals> <goal>create</goal> </goals> <configuration> <propertyName>buildNumber</propertyName> <timestampPattern>yyyyMMdd</timestampPattern> </configuration> </execution> </executions> </plugin> </plugins>