Run Tomcat and deploy project with own server.xml
java, maven, tomcat
Solution
The tomcat7-maven-plugin documentation says for `<serverXml>`:
server.xml to use Note if you use this you must configure in this file your webapp paths.
I think this means that you have to insert a `<Context>` element with the path of your war inside the `<Host>` element, like so:
<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true">
<Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>
Where "webapp" is my generated war name. Apparently, `appBase` is relative to `target/tomcat` (and "webapps" seems to be the default value). `docBase` is relative to `appBase` so for simplicity I used the relative path to the build directory.
This is working for me, and without that `<Context>` element I get a white page.
If you are using filtering you can probably replace `docBase` by a property. However take care to exclude the server.xml (and tomcat-users.xml) from your war file!
Problem
I just want to run a web project that has been configured in a maven project with the pom.xml. It uses the maven tomcat7-maven-plugin to deploy the web app artifact and all is working properly at this point. Now I want to add its own server.xml and tomcat-users.xml in the tomcat configuration. I read that I need to add the following lines. ``` <serverXml>src/main/resources/tomcat/server.xml</serverXml> <tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers> ``` And that is fine. It is working now and tomcat is deployed using the configuration file above,but the problem is > Web application artifact is not deployed there (is not deployed automatically when I run tomcat7:run). It seems the artifact is not detected by the plugin and just starts the tomcat server without adding the artifact to the webapps just use the new config files. I use this config. ``` <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <executions> <execution> <id>tomcat-run</id> <goals> <goal>exec-war-only</goal> </goals> <phase>package</phase> <configuration> <url>http://localhost:8080/web-services</url> <path>/web-services</path> <serverXml>src/main/resources/tomcat/server.xml</serverXml> <tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers> <warRunDependencies> <warRunDependency> <dependency> <groupId>com.koitoer.webservices</groupId> <artifactId>web-services</artifactId> <version>1.0-SNAPSHOT</version> <type>war</type> </dependency> <contextPath>/web-services</contextPath> </warRunDependency> </warRunDependencies> </configuration> </execution> </executions> </plugin> ``` But tomcat starts deploy the webapp artifact but does not use the new config files. What is the correct configuration there, I checked this post but nothing, this is possible or I should add the war file manually using tomcat manager?