The tomcat7-maven-plugin
allows running the current project as a Web application and additional <webapps>
can be specified that will be simultaneously loaded into tomcat.web
My project is not a Web application, but it accesses services that are provided by webapps. So how is it possible to deploy a number of webapps without running the project itself as a webapp? The following Maven snippet results in FileNotFoundExceptions because a context.xml cannot be found.apache
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <executions> <execution> <id>run-tomcat</id> <phase>${tomcat.run.phase}</phase> <goals><goal>run-war-only</goal></goals> <configuration> <webapps> <webapp> <contextPath>/my/app1</contextPath> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <type>war</type> <asWebapp>true</asWebapp> </webapp> ... possibly more webapps ... </webapps> </configuration> </execution> <execution> <id>tomcat-shutdown</id> <phase>${tomcat.shutdown.phase}</phase> <goals><goal>shutdown</goal></goals> </execution> </executions> </plugin>
Workaround:tomcat
Even though your application itself is not a webapp, you need to configure a path
and a contextFile
for it:app
<configuration> <path>/my/non/existing/webapp</path> <contextFile>src/test/resources/context.xml</contextFile> <webapps> ...
The specified context.xml
file must exist. The following worked for me, even though the web.xml
file does not exist:webapp
<?xml version="1.0" encoding="utf-8"?> <Context path="/my/non/existing/webapp"> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>