public void shaderWithPattern(String shadedPattern, File jar) throws Exception {
    Shader s = (Shader) lookup(Shader.ROLE);

    Set<File> set = new LinkedHashSet<File>();

    set.add(new File(getBasedir(), "src/test/jars/test-project-1.0-SNAPSHOT.jar"));

    set.add(new File(getBasedir(), "src/test/jars/plexus-utils-1.4.1.jar"));

    List<Relocator> relocators = new ArrayList<Relocator>();

    relocators.add(
        new SimpleRelocator(
            "org/codehaus/plexus/util",
            shadedPattern,
            null,
            Arrays.asList(
                "org/codehaus/plexus/util/xml/Xpp3Dom", "org/codehaus/plexus/util/xml/pull.*")));

    List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>();

    resourceTransformers.add(new ComponentsXmlResourceTransformer());

    List<Filter> filters = new ArrayList<Filter>();

    ShadeRequest shadeRequest = new ShadeRequest();
    shadeRequest.setJars(set);
    shadeRequest.setUberJar(jar);
    shadeRequest.setFilters(filters);
    shadeRequest.setRelocators(relocators);
    shadeRequest.setResourceTransformers(resourceTransformers);

    s.shade(shadeRequest);
  }
  public void testShaderWithExclusions() throws Exception {
    File jarFile = new File(getBasedir(), "target/unit/foo-bar.jar");

    Shader s = (Shader) lookup(Shader.ROLE, "default");

    Set<File> set = new LinkedHashSet<File>();
    set.add(new File(getBasedir(), "src/test/jars/test-artifact-1.0-SNAPSHOT.jar"));

    List<Relocator> relocators = new ArrayList<Relocator>();
    relocators.add(
        new SimpleRelocator(
            "org.codehaus.plexus.util",
            "hidden",
            null,
            Arrays.asList(
                "org.codehaus.plexus.util.xml.Xpp3Dom", "org.codehaus.plexus.util.xml.pull.*")));

    List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>();

    List<Filter> filters = new ArrayList<Filter>();

    ShadeRequest shadeRequest = new ShadeRequest();
    shadeRequest.setJars(set);
    shadeRequest.setUberJar(jarFile);
    shadeRequest.setFilters(filters);
    shadeRequest.setRelocators(relocators);
    shadeRequest.setResourceTransformers(resourceTransformers);

    s.shade(shadeRequest);

    ClassLoader cl = new URLClassLoader(new URL[] {jarFile.toURI().toURL()});
    Class<?> c = cl.loadClass("org.apache.maven.plugins.shade.Lib");

    Field field = c.getDeclaredField("CLASS_REALM_PACKAGE_IMPORT");
    assertEquals("org.codehaus.plexus.util.xml.pull", field.get(null));

    Method method = c.getDeclaredMethod("getClassRealmPackageImport", new Class[0]);
    assertEquals("org.codehaus.plexus.util.xml.pull", method.invoke(null, new Object[0]));
  }