Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

These are the various XML configuration elements that you can use to configure the Cargo Maven2 pluginAnt tasks. Make sure you also check the examples which show how to use them.

Top level configuration elements

Description

Mandatory?

Default value

<configuration>

Definition of a Configuration

(thumbs down)

Defaults to a standalone configuration if the container is of type local and a runtime one if it's of type remote

<container>

Definition of a Container

(thumbs down)

Defaults to a Jetty 7.x installed container if not specified

<deployer>

Definition of a Deployer

(thumbs down)

Defaults to a deployer matching the container's type if none is specified (installed local deployer for an installed container, remote deployer for a remote container and embedded local deployer for an embedded container)

<deployables>

A list of deployables that are going to be deployed in the container when it is started or when cargo:deploycargo:undeploy is called.

(thumbs down)

If the project's packaging is warear or ejb, the generated artifact is added automatically to the list of deployables to deploy. If you wish the generated artifact not to be added to the deployables list, just add an empty <deployer/> element.

<daemon>

Additional configuration that is used when deploying with the Cargo Daemon.

(thumbs down)

For more information, please read: Cargo Daemon.

<skip>

Set this to true to bypass cargo execution

(thumbs down)

Defaults to false, you can also steer it using the system property cargo.maven.skip

...

<configuration> elements

...

Description

...

Mandatory?

...

Default value

...

<configfiles>

...

List of Configuration files that are to be added to a local container's configuration. Each file is specified using a <configfile> element. Cargo token replacement is applied to the files and any existing file is overwritten.

...

(thumbs down)

...

No default

...

<files>

...

List of files that are to be added to a local container's configuration. Each file is specified using a <file> element.

...

(thumbs down)

...

No default

...

<home>

...

For standalone configuration this is the location where Cargo will create the configuration and for existing configuration this is where it is located

...

(thumbs down)

...

${project.build.directory}/cargo/configurations/${containerId}

...

<implementation>

...

Full classname of a custom configuration implementation to use. In that case the custom configuration is registered with the <containerId> and <type> specified

...

(thumbs down)

...

Defaults to the Cargo-provided implementation if not specified

...

<properties>

...

Values to use for various Configuration properties.

 

You can also use the <propertiesFile> element to load configuration properties from a file.

...

(thumbs down)

...

Code Block
mvn -Dcargo.servlet.port=8082 cargo:start

In addition to this, properties can also be set using the Maven2 settings.xml file. See the setting configuration options via the Maven settings.xml section for details.

...

Values to use for various XML replacements.

...

(thumbs down)

...

No default

...

<type>

...

Configuration's type. Valid values are standalone, existing and runtime

...

(thumbs down)

...

standalone

...

(thumbs down)

...

No default

...

(thumbs down)jetty7xNo default or <artifactInstaller> , nor <artifactInstaller> plugin Full classname custom container implementation to use. In that case, the custom container is registered with the <containerId> and <type> specifiedDefaults to the Cargo-provided implementation if not specified Maven the Maven The container

<container> elements

Description

Mandatory?

Default value

<append>

If true, then the file specified by <output> will not be erased across different runs

(thumbs down)

false

<action>

Action to execute. These can be:

  • Container actions: configure, start, restartrun or stop
  • Deployer actions: deploy, undeploy or redeploy
  • Cargo Daemon actions: daemon-start or daemon-stop

(thumbs up)

No default

<containerId>

Id of the container to use. Valid values can be found in the description page for each container

(thumbs up)

No default

<dependencies>

List of extra dependencies or shared dependencies that will be added to the container or applications execution classpath.

(thumbs down)

<containerType>

The container's type. Valid values are installed, embedded and remote

(thumbs down)

Default value is installed

<home>

Location where the container is installed. If specified in conjunction with the <zipUrlInstaller>

element, it will override the home directory defined by the installer

(thumbs down)

No default

If the user has not defined any home

nor <zipUrlInstaller>

element then the

Ant task will automatically attempt to download the container using the URL used by its tests (see the Tested On section of each container).

<implementation>

<zipUrlInstaller>

Defines the location of a

(thumbs down)

container distribution zip that will be downloaded and installed

(thumbs down)

No default

If the user has not defined any home nor <zipUrlInstaller> element then the Ant task will automatically attempt to download the container using the URL used by its tests (see the Tested On section of each container).

<timeout>

The timeout after which Cargo reports an error if the container is not started or stopped

(thumbs down)

120000 ms (2 minutes)

<systemProperties>

List of <key>value</key> pairs to be passed as System properties to the container when it is started.

 

You can also use the <systemPropertiesFile> element to load system properties from a file.

(thumbs down)

No default

<extraClasspath>

Additional classpath entries for the classpath that will be used to start the containers.

(thumbs down)

No default

<sharedClasspath>

Classpath entries for the classpath that will be shared the applications deployed in a container. Shared application classpath deployment is only available for local containers which support shared Application Classpaths.

(thumbs down)

No default

<log>

Path to a file where Cargo logs are saved

(thumbs down)

Logs to the

Ant console if no log file is specified

<output>

Path to a file where container logs are saved

(thumbs down)

Logs to the file specified by the <log> element or to

the Ant console if no such file has been specified

<systemProperties>

List of <key>value</key> pairs to be passed as System properties to the container when it is started.

 

You can also use the <systemPropertiesFile> element to load system properties from a file.

(thumbs down)

No default

<timeout>

The timeout after which Cargo reports an error if the container is not started or stopped

(thumbs down)

120000 ms (2 minutes)

<type>

<append>

If true, then the file specified by <output> will not be erased across different runs

(thumbs down)

false

<configuration>

Definition of a Configuration

(thumbs down)

Defaults to a standalone configuration if the container is of type local and a runtime one if it's of type remote

<daemon>

Additional configuration that is used when deploying with the Cargo Daemon.

(thumbs down)

For more information, please read: Cargo Daemon.

Anchor
configuration
configuration

installed embedded remote

<configuration> elements

Description

Mandatory?

Default value

<type>

Configuration's type. Valid values are

standalone,

existing and

runtime

(thumbs down)

Default value is installed unless the <containerId> has not been specified, in which case the default is to use the Jetty 7.x installed container

<zipUrlInstaller>

Defines the location of a container distribution zip that will be downloaded and installed

(thumbs down)

No default

If the user has not defined any home, <zipUrlInstaller> nor <artifactInstaller> element then the plugin will automatically attempt to download the container using the URL used by its tests (see the Tested On section of each container).

<artifactInstaller>

Defines the location of a container Maven artifact that will be downloaded and installed

(thumbs down)

No default

If the user has not defined any home, <zipUrlInstaller> nor <artifactInstaller> element then the plugin will automatically attempt to download the container using the URL used by its tests (see the Tested On section of each container).

...

<deployer> elements

Description

Mandatory?

Default value

<implementation>

Deployer implementation class. Usage of this option is not recommended, please prefer type instead.

(thumbs down)

No default

<type>

The deployer's type.

(thumbs down)

Defaults to a deployer matching the container's type if none is specified (installed local deployer for an installed container, remote deployer for a remote container and embedded local deployer for an embedded container)

...

<configfile>

standalone

<home>

For standalone configuration this is the location where Cargo will create the configuration and for existing configuration this is where it is located

(thumbs up)

No default

<properties>

Values to use for various Configuration properties.

 

You can also use the <propertiesFile> element to load configuration properties from a file.

(thumbs down)

Default configuration properties

Note that these configuration properties can also be overriden using Java properties; for example:

Code Block
ant -Dcargo.servlet.port=8082

<deployables>

A list of deployables that are going to be deployed in the container when it is started or when deploy / undeploy is called.

(thumbs down)

No default

<fileConfigs>

List of Configuration files that are to be added to a local container's configuration. Each file is specified using a <fileConfig> element. Cargo token replacement is applied to the files and any existing file is overwritten.

(thumbs down)

No default

<files>

List of files that are to be added to a local container's configuration. Each file is specified using a <file> element.

(thumbs down)

No default

<xmlReplacements>

Values to use for various XML replacements.

(thumbs down)

No default

<users>List of users to be created in container configuration.

(thumbs down)

No default

Anchor
fileconfig
fileconfig

<fileConfigs> elements

Description

Mandatory?

Default value

<file>

The configuration file or directory containing configuration files.

(thumbs up)

No default

<todir>

The target directory, relative to configuration home, where the file should be copied

(thumbs down)

If not specified, the file will be copied to the configuration's home directory

<tofile>

The target file name to use

(thumbs down)

The original file name

...

<pingUrlPath>

<deployable> elements

Description

Mandatory?

Default value

<artifactId>

Maven artifact id for the module. This artifact id must match either the project's artifact id if your project generates a J2EE artifact (WAR, EAR, EJB and RAR) or it must match a specified <project>/<dependencies>/<dependency> artifact id

(thumbs down)

Defaults to the project's artifact id

<groupId>

Maven group id for the module. This group id must match either the project's group id if your project generates a J2EE artifact (WAR, EAR, EJB and RAR) or it must match a specified <project>/<dependencies>/<dependency> group id

(thumbs down)

Defaults to the project's group id

<implementation>

Deployable implementation class. Usage of this option is not recommended, please prefer type instead.

(thumbs down)

No default

<location>

Path location where the module can be found

(thumbs down)

Default's to the project's generated artifact location or to the specified <project>/<dependencies>/<dependency> location<type>

Deployable type, i.e. warearejb, etc.

(thumbs up)

No default

<file>

The deployable file.

(thumbs up)

No default

<pingURL>

URL on which to ping the deployed or undeployed application (to check if deployment or undeployment is successful), that should return an HTTP OK response only after the deployment is complete. If not set, the deployed or undeployed application will not be pinged, hence the deployment considered as complete as soon as the target server's method returns successfully.

(thumbs down)

No default

URL path used to ping the deployed or undeployed application. It has similar functionality as <pingURL>, but in this case there is omitted protocol, server and port informations - they are retrieved from container configuration. For example for URL http://localhost:8080/cargo  its URL path is just "/cargo".

(thumbs down)

No default

<pingTimeout>

If <pingURL> is set, the number of milliseconds after which the ping fails the build if still not successful.

(thumbs down)

20000 (i.e., 20 seconds)

<properties>

User-defined properties of a deployable.

(thumbs down)

No default

<type>

Maven type for the module. This type must match either the project's packaging if your project generates a J2EE artifact (WAR, EAR, EJB and RAR) or it must match a specified <project>/<dependencies>/<dependency> type

(thumbs down)

Defaults to the project's packaging

Anchor
prop2
prop2

<properties> elements

 Deployable Type

Description

Mandatory?

Default value

<context>

WAR

The context name to use when deploying the web application.

(thumbs down)

Default's to the artifact's ${artifactId}file name without the extension

<war>

WAR

The path of the WAR being deployed.

(thumbs down)

Default's to the project's generated artifact locationfile name without the extension

<ear>

EAR

The path of the EAR being deployed.

(thumbs down)

Default's to the project's generated artifact locationthe file name without the extension

<name>

EAR

The name of EAR deployable (it can be anything, there's no special rule).

(thumbs down)

Default's to the artifact's ${artifactId}file name without the extension

<ejb>

EJB

The path of the EJB being deployed.

(thumbs down)

Default's to the project's generated artifact locationthe file name without the extension

Info
titleAbout WAR contexts

Many containers have their specific files for redefining context roots (Tomcat has context.xml, JBoss has jboss-web.xml, etc.). If your WAR has such a file, the server will most probably use the context root defined in that file instead of the one you specify using the CARGO deployer.

...

Anchor
dependencydependency

...

<dependency> elements

...

Description

...

Mandatory?

...

<artifactId>

...

Maven's artifact id. This artifact id must match a specified <project>/<dependencies>/<dependency> artifact id

...

(thumbs down)

...

Defaults to the project's artifact id

...

<groupId>

...

Maven's group id. This group id must match a specified <project>/<dependencies>/<dependency> group id

...

(thumbs down)

...

Defaults to the project's group id

...

<type>

...

Maven's type. This type must match a specified <project>/<dependencies>/<dependency> type

...

(thumbs down)

...

Defaults to the project's packaging

...

<classpath>

...

Target classpath, either extra (default) or shared. Shared application classpath deployment is only available for local containers which support shared Application Classpaths.

...

(thumbs down)

...

extra (container classpath)

...

<location>

...

The path of a folder or a jar file you wish to add to deployable classpath. This element can be used to explicitly add entries to the classpath. For example:

Code Block
<dependency>
   <location>src/main/resources/conf</location>
</dependency>

...

(thumbs down)

...

If the groupId and artifactId match those of the project then the deployable is the artifact generated by the project. Otherwise the location is the location of the dependency in your local respository.

Anchor
zipUrlInstaller
zipUrlInstaller

<zipUrlInstaller> elements

Description

Mandatory?

Default value

<url>

URL from which to download the container's ZIP or TAR.GZ file.

(thumbs up)

No default

<downloadDir>

Directory in which the zipUrlInstaller should download the container's ZIP or TAR.GZ file.

(thumbs down)

${java.io.tmpdir}/cargo/installs

<extractDir>

Directory in which the zipUrlInstaller should extract the container's ZIP or TAR.GZ file.

(thumbs down)

${project.build.directory}/cargo/installs

<proxy>

Proxy server settings, if required.

(thumbs down)

No default

Anchor
proxy
proxy

Info
titleAutomatic proxy settings

Note that CARGO will by default reuse existing Maven2 proxy configuration -so you won't need to type the proxy settings for the zipUrlInstaller element.

<proxy> elements (under the zipUrlInstaller element)

Description

Mandatory?

Default value

<cargo.proxy.host><host>

Proxy host name or IP address.

(thumbs up)

No default

<cargo.proxy.port><port>

Proxy port.

(thumbs down)

Very probably 80

<cargo.proxy.user><user>

User name to connect to the proxy server.

(thumbs down)

No default

<cargo.proxy.password><password>

Password to connect to the proxy server.

(thumbs down)

No default

...

<artifactInstaller> elements

Description

Mandatory?

Default value

<groupId>

Group id.

(thumbs up)

No default

<artifactId>

Artifact id.

(thumbs up)

No default

<version>

Version.

(thumbs up)

No default

<type>

Artifact type.

(thumbs down)zip

<classifier>

Classifier.

(thumbs down)

No default

<extractDir>

Directory in which the artifactInstaller should extract the container's ZIP or TAR.GZ file.

(thumbs down)

${project.build.directory}/cargo/installs

Anchor
user
user

<user> elementsDescriptionMandatory?Default value
<name>User name.

(thumbs up)

No default
<password>User password.

(thumbs down)

No default
<roles>

List of roles which should be assigned to user.

Example of roles configuration:

Code Block
languagexml
<roles>
    <role>cargo</role>
</roles>

(thumbs down)

No default

...

Info
titleContainer configuration for the Daemon

For the Maven2/Maven3 pluginAnt tasks, the "daemonized server" is actually a local container with a hostname that points to a remote machine. This implies that:

  • You should not set the container type to a remote container nor add any remote deployers to the configuration; but instead define the container as a local container (with either a standalone or existing configuration)
  • When you define the home paths for the container and the configuration, remember these paths are for the machine where the Daemon is running (and, preferably, use absolute paths)

When you call cargo:daemon-start, the Maven2/Maven3 plugin Ant tasks will do the following:

  • If an installer is defined:
    • Download the archive locally
    • Send the archive over to the machine running the Daemon
    • Instruct the Daemon to extract the archive
  • If a standalone local configuration is defined, instruct the Daemon to create it
  • In all cases:
  • Finally, instruct the Daemon to start the container

...

<properties> elements

Description

Mandatory?

Default value

<cargo.daemon.url>

URL to connect with the daemon.

(thumbs up)

No default

<cargo.daemon.handleid>

The handle id to register this container with.

(thumbs up)

No default

<cargo.daemon.autostart>

When set to true, the dameon will automatically restart the container if the daemon notices it is stopped.

(thumbs down)

false

<cargo.daemon.username>Username used when authenticating against the daemon host(thumbs down)admin
<cargo.daemon.password>Password used when authenticating against the daemon host(thumbs down)"" (empty String)

...

Setting configuration options via the Maven settings.xml

The Cargo Maven2/Maven3 plugin also allows you to define container configuration properties using the settings.xml file. This way, you can for example store properties like usernames and passwords in a centralized location (as opposed to pom.xml files).

First, add the configuration properties you would like in your settings.xml file's <servers> section:

...

<servers>
  <server>
    <id>jonas1</id>
    <configuration>
      <cargo.remote.uri>jmx://jonas1</cargo.remote.uri>
      <cargo.jonas.domain.name>jonas</cargo.jonas.domain.name>
      <cargo.remote.username>jonas</cargo.remote.username>
      <cargo.remote.password>jonas</cargo.remote.password>
    </configuration>
  </server>
<servers>

Then, in the Cargo plugin's configuration, use the cargo.server.settings property in order to reference the configuration properties that you have previously defined. For example:

...

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
    [...]
    <configuration>
      <properties>
        <cargo.server.settings>jonas1</cargo.server.settings>
      </properties>
    </configuration>
  </configuration>
</plugin>

In this case, the plugin will internally "expand" the configuration into:

...

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
    [...]
    <configuration>
      <properties>
        <cargo.remote.uri>jmx://jonas1</cargo.remote.uri>
        <cargo.jonas.domain.name>jonas</cargo.jonas.domain.name>
        <cargo.remote.username>jonas</cargo.remote.username>
        <cargo.remote.password>jonas</cargo.remote.password>
      </properties>
    </configuration>
  </configuration>
</plugin>

...

titleCareful with properties set in the POM

Priority for property values are as follows:

...