Definition

The XML replacements option allows you to modify XML files of your container's configuration using XPath statements.

This feature is only available for standalone local containers, and currently doesn't work with the Cargo Daemon.

Explanation

In some cases, it is necessary to modify XML files of your container. This can be done using Cargo's xmlReplacements option, accessible via the Cargo APIs.

You might for example want to modify the defaultHost for your Tomcat instance.

Example using the Java API

LocalContainer container = ...;
StandaloneLocalConfiguration configuration = (StandaloneLocalConfiguration) getLocalContainer().getConfiguration();

XmlReplacement defaultHost = new XmlReplacement();
defaultHost.setFile("conf/server.xml");
defaultHost.setXpathExpression("//Server/Engine");
defaultHost.setAttributeName("defaultHost");
defaultHost.setValue("myhost");
configuration.addXmlReplacement(defaultHost);

Some notes:

Example using the ANT tasks

<cargo containerId="@{containerId}" action="@{action}">
  <configuration home="${configuration.home}">
    <xmlreplacement file="conf/server.xml" xpathexpression="//Server/Engine" attributename="defaultHost" value="myhost"/>
  </configuration>
</cargo>

Example using the Maven 2 plugin

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
    <container>
      [...]
    </container>
    <configuration>
      <type>standalone</type>
      [...]
      <xmlReplacements>
        <xmlReplacement>
          <file>conf/server.xml</file>
          <xpathExpression>//Server/Engine</xpathExpression>
          <attributeName>defaultHost</attributeName>
          <value>myhost</value>
        </xmlReplacement>
      </xmlReplacements>
    </configuration>
  </configuration>
</plugin>