Index: extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Container.java
===================================================================
--- extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Container.java	(revision 2757)
+++ extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Container.java	(working copy)
@@ -23,6 +23,7 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.HashSet;
 import java.util.Map;
 
 import org.apache.maven.plugin.MojoExecutionException;
@@ -383,6 +384,7 @@
                 setupOutput((InstalledLocalContainer) container, project);
                 setupExtraClasspath((InstalledLocalContainer) container, project);
                 setupSystemProperties((InstalledLocalContainer) container);
+                setupSharedClasspath((InstalledLocalContainer) container, project);
             }
         }
         setupLogger(container, logger);
@@ -489,16 +491,42 @@
     {
         if (getDependencies() != null)
         {
-            String[] classpaths = new String[getDependencies().length];
-            for (int i = 0; i < getDependencies().length; i++)
+            HashSet<String> classpaths = new HashSet<String>();
+            for (Dependency dependency : getDependencies())
             {
-                classpaths[i] = getDependencies()[i].getDependencyPath(project);
+                if (dependency.isOnClasspath(Dependency.EXTRA_CLASSPATH))
+                {
+                    classpaths.add(dependency.getDependencyPath(project));
+                }
             }
-            container.setExtraClasspath(classpaths);
+            container.setExtraClasspath(classpaths.toArray(new String[classpaths.size()]));
         }
     }
 
     /**
+     * Setup shared classpath.
+     * @param container Container.
+     * @param project Cargo project.
+     * @throws MojoExecutionException If dependency extraction fails.
+     */
+    private void setupSharedClasspath(InstalledLocalContainer container, CargoProject project)
+        throws MojoExecutionException
+    {
+        if (getDependencies() != null)
+        {
+            HashSet<String> classpaths = new HashSet<String>();
+            for (Dependency dependency : getDependencies())
+            {
+                if (dependency.isOnClasspath(Dependency.SHARED_CLASSPATH))
+                {
+                    classpaths.add(dependency.getDependencyPath(project));
+                }
+            }
+            container.setSharedClasspath(classpaths.toArray(new String[classpaths.size()]));
+        }
+    }
+    
+    /**
      * Setup system properties.
      * @param container Container.
      * @throws MojoExecutionException If dependency extraction fails.
Index: extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Dependency.java
===================================================================
--- extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Dependency.java	(revision 2757)
+++ extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/configuration/Dependency.java	(working copy)
@@ -33,6 +33,47 @@
 public class Dependency extends AbstractDependency
 {
     /**
+     * Represents the "extra" classpath type.
+     */
+    public static final String EXTRA_CLASSPATH = "extra";
+
+    /**
+     * Represents the "shared" classpath type.
+     */
+    public static final String SHARED_CLASSPATH = "shared";
+
+    /**
+     * The Dependency target classpath.
+     */
+    private String classpath = EXTRA_CLASSPATH;
+
+    /**
+     * @return The Dependency target classpath.
+     */
+    public String getClasspath()
+    {
+        return classpath;
+    }
+
+    /**
+     * @param classpath the Dependency target classpath.
+     */
+    public void setClasspath(String classpath) 
+    {
+        this.classpath = classpath;
+    }
+
+    /**
+     * Evaluates if the Dependency is targeted for a classpath type.
+     * @param classpath a classpath type to compare with
+     * @return <code>true</code> if this Dependency is targeted for the classpath type.
+     */
+    public boolean isOnClasspath(String classpath)
+    {
+        return this.classpath.equals(classpath);
+    }
+
+    /**
      * Get the path of this dependency.
      * @param project Cargo project.
      * @return Path of this dependency.
Index: extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ContainerStartMojo.java
===================================================================
--- extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ContainerStartMojo.java	(revision 2757)
+++ extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ContainerStartMojo.java	(working copy)
@@ -30,7 +30,7 @@
  * 
  * @version $Id$
  * @goal start
- * @requiresDependencyResolution compile
+ * @requiresDependencyResolution test
  */
 public class ContainerStartMojo extends AbstractCargoMojo
 {
Index: extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ConfigureMojo.java
===================================================================
--- extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ConfigureMojo.java	(revision 2757)
+++ extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/ConfigureMojo.java	(working copy)
@@ -29,6 +29,7 @@
  * 
  * @version $Id$
  * @goal configure
+ * @requiresDependencyResolution test
  * @description Create a local container standalone configuration at a specified directory
  */
 public class ConfigureMojo extends AbstractCargoMojo
Index: extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/PackageMojo.java
===================================================================
--- extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/PackageMojo.java	(revision 2757)
+++ extensions/maven2/plugin/src/main/java/org/codehaus/cargo/maven2/PackageMojo.java	(working copy)
@@ -31,7 +31,7 @@
  * 
  * @version $Id$
  * @goal package
- * @requiresDependencyResolution compile
+ * @requiresDependencyResolution test
  * @since Maven2 Cargo Plugin v0.3
  */
 public class PackageMojo extends AbstractCargoMojo
Index: core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat7x/catalina.properties
===================================================================
--- core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat7x/catalina.properties	(revision 2757)
+++ core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat7x/catalina.properties	(working copy)
@@ -44,7 +44,7 @@
 #     "foo/*.jar": Add all the JARs of the specified folder as class 
 #                  repositories
 #     "foo/bar.jar": Add bar.jar as a class repository
-common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar@catalina.common.loader@
+common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.base}/common/classes,${catalina.base}/common/lib/*.jar
 
 #
 # List of comma-separated paths defining the contents of the "server" 
@@ -71,7 +71,7 @@
 #     "foo/bar.jar": Add bar.jar as a class repository 
 # Please note that for single jars, e.g. bar.jar, you need the URL form
 # starting with file:.
-shared.loader=
+shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
 
 # List of JAR files that should not be scanned for configuration information
 # such as web fragments, TLD files etc. It must be a comma separated list of
Index: core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat5x/catalina.properties
===================================================================
--- core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat5x/catalina.properties	(revision 2757)
+++ core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat5x/catalina.properties	(working copy)
@@ -29,7 +29,7 @@
 #     "foo/*.jar": Add all the JARs of the specified folder as class
 #                  repositories
 #     "foo/bar.jar": Add bar.jar as a class repository
-common.loader=${catalina.home}/common/classes,${catalina.home}/common/i18n/*.jar,${catalina.home}/common/endorsed/*.jar,${catalina.home}/common/lib/*.jar@catalina.common.loader@
+common.loader=${catalina.home}/common/classes,${catalina.home}/common/i18n/*.jar,${catalina.home}/common/endorsed/*.jar,${catalina.home}/common/lib/*.jar,${catalina.base}/common/classes,${catalina.base}/common/lib/*.jar
 
 #
 # List of comma-separated paths defining the contents of the "server"
Index: core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat6x/catalina.properties
===================================================================
--- core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat6x/catalina.properties	(revision 2757)
+++ core/containers/tomcat/src/main/resources/org/codehaus/cargo/container/internal/resources/tomcat6x/catalina.properties	(working copy)
@@ -29,7 +29,7 @@
 #     "foo/*.jar": Add all the JARs of the specified folder as class
 #                  repositories
 #     "foo/bar.jar": Add bar.jar as a class repository
-common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar@catalina.common.loader@
+common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.base}/common/classes,${catalina.base}/common/lib/*.jar
 
 #
 # List of comma-separated paths defining the contents of the "server"
@@ -56,7 +56,7 @@
 #     "foo/bar.jar": Add bar.jar as a class repository
 # Please note that for single jars, e.g. bar.jar, you need the URL form
 # starting with file:.
-shared.loader=
+shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
 
 #
 # String cache configuration.
Index: core/containers/tomcat/src/main/java/org/codehaus/cargo/container/tomcat/internal/AbstractCatalinaStandaloneLocalConfiguration.java
===================================================================
--- core/containers/tomcat/src/main/java/org/codehaus/cargo/container/tomcat/internal/AbstractCatalinaStandaloneLocalConfiguration.java	(revision 2757)
+++ core/containers/tomcat/src/main/java/org/codehaus/cargo/container/tomcat/internal/AbstractCatalinaStandaloneLocalConfiguration.java	(working copy)
@@ -33,6 +33,7 @@
 import org.codehaus.cargo.container.InstalledLocalContainer;
 import org.codehaus.cargo.container.LocalContainer;
 import org.codehaus.cargo.container.configuration.ConfigurationCapability;
+import org.codehaus.cargo.container.configuration.FileConfig;
 import org.codehaus.cargo.container.configuration.entry.DataSource;
 import org.codehaus.cargo.container.configuration.entry.ResourceSupport;
 import org.codehaus.cargo.container.deployable.Deployable;
@@ -99,17 +100,28 @@
         if (container instanceof InstalledLocalContainer)
         {
             InstalledLocalContainer installedContainer = (InstalledLocalContainer) container;
-            String[] sharedClassPath = installedContainer.getSharedClasspath();
-            StringBuilder tmp = new StringBuilder();
-            if (sharedClassPath != null)
+            String[] classPath = installedContainer.getExtraClasspath();
+            if (classPath != null)
+            {
+                for (String path : classPath)
+                {
+                    FileConfig fc = new FileConfig();
+                    fc.setFile(path);
+                    fc.setToDir("common/lib");
+                    setFileProperty(fc);
+                }
+            }
+            classPath = installedContainer.getSharedClasspath();
+            if (classPath != null)
             {
-                for (String element : sharedClassPath)
+                for (String path : classPath)
                 {
-                    tmp.append(',').append(escapePath(element));
+                    FileConfig fc = new FileConfig();
+                    fc.setFile(path);
+                    fc.setToDir("shared/lib");
+                    setFileProperty(fc);
                 }
             }
-            getAntUtils().addTokenToFilterChain(filterChain, "catalina.common.loader",
-                tmp.toString());
         }
 
         setupConfFiles(container, filterChain);

