Here is 3 different way to control the lifetime a local Tomcat 7 container using Apache Maven. A typical scenario would be to start a servlet container prior to running integration tests (Selenium, SAHI or using any other framework you can think of )
With the following examples, you will be able to start an instance of Tomcat 7 running your web application in the pre-integration-test phase and stop the instance in the post-integration-test phase. You can also decide to use an embedded container like Jetty instead.
Cargo is a thin wrapper that allows you to manipulate Java EE containers in a standard way. Cargo provides the following Tools and APIs:
Here is the config I am using to start an existing Tomcat 7 container:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<wait>true</wait>
<container>
<containerId>tomcat7x</containerId>
<type>installed</type>
<home>${CATALINA_HOME}</home>
</container>
<configuration>
<type>existing</type>
<home>${CATALINA_HOME}</home>
<properties>
<cargo.tomcat.manager.url>http://localhost:8080/manager/text</cargo.tomcat.manager.url>
<cargo.remote.username>admin</cargo.remote.username>
<cargo.remote.password>admin</cargo.remote.password>
</properties>
</configuration>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
</executions>
</plugin>
Maven Ant plugin provides the ability to run Ant tasks from within Maven. You can even embed your Ant scripts in the POM! It is not the intention of this plugin to provide a means of polluting the POM, so it's encouraged to move all your Ant tasks to a build.xml file and just call it from the POM using Ant's <ant/> task. One of the main purposes of this plugin is to facilitate the migration from Ant based projects to Maven. Some projects may not currently be able to migrate because they depend on custom build functionality that Maven doesn't provide by default.
Thank to Ant exec task you are able to start any process like ${CATALINA_HOME}\bin\startup.bat
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>pre-integration-test</phase>
<configuration>
<target>
<echo message="Starting tomcat"/>
<exec executable="cmd">
<arg value="/c"/>
<arg value="${CATALINA_HOME}\bin\startup.bat"/>
</exec>
<echo message="Tomcat started"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
A drop in for the Exec Ant Task is to use the Maven Exec plugin, this Maven plugin provides 2 goals to help execute system and Java programs.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${CATALINA_HOME}\bin\shutdown.bat</executable>
</configuration>
</execution>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${CATALINA_HOME}\bin\startup.bat</executable>
</configuration>
</execution>
</executions>
</plugin>
The profile used to connect to maven must be configured with proper roles in the/conf/tomcat-users.xml file where Tomcat is installed:
<tomcat-users> <user name="admin" password="admin" roles="admin-gui,manager-gui,manager-script" /> </tomcat-users>
Privacy Statement | Copyright Notice | Licenses
© 1999-2012 Waltercedric.com. Designed by Cédric Walter. Sitemap
Reproduction without explicit permission is prohibited. All Rights Reserved. All photos remain copyright © their rightful owners. No copyright infringement is intended.
Disclaimer: The editor(s) reserve the right to edit any comments that are found to be abusive, offensive, contain profanity, serves as spam, is largely self-promotional, or displaying attempts to harbour irrelevant text links for any purpose.