public void execute() throws MojoExecutionException, MojoFailureException {
    List<Artifact> dependencies = (List<Artifact>) project.getRuntimeArtifacts();
    List<Artifact> excludes = new ArrayList<Artifact>(dependencies.size());

    for (Artifact artifact : dependencies) {
      // Rather than simply outputting all dependencies as excludes, we only want to output
      // an exclude for the direct children of the allowed artifact, because the other ones
      // will be disabled recursively by Maven.
      int allowedParentPos = getAllowedParentPostion(artifact.getDependencyTrail());
      if (allowedParentPos != -1 && allowedParentPos == artifact.getDependencyTrail().size() - 2) {
        excludes.add(artifact);
      }
    }

    if (excludes.size() > 0) {
      System.out.println();
      System.out.println();
      System.out.println();
      System.out.println("Please add these excludes to the lily-hbase-client pom:");
      System.out.println();
      for (Artifact artifact : excludes) {
        System.out.println("<exclusion>");
        System.out.println("  <groupId>" + artifact.getGroupId() + "</groupId>");
        System.out.println("  <artifactId>" + artifact.getArtifactId() + "</artifactId>");
        System.out.println("</exclusion>");
      }
      System.out.println();
      System.out.println();
      System.out.println();

      throw new MojoExecutionException("lily-hbase-client is missing some excludes, please adjust");
    }
  }
  /** put the dependencies that we are interested in using into the runtime object */
  private void prepareRuntimeDependencies(Runtime runtime, MavenProject project) {
    List artifactList = project.getRuntimeArtifacts();
    List dependencies = runtime.getJar().getDependencies();

    for (Iterator i = artifactList.iterator(); i.hasNext(); ) {
      Artifact artifact = (Artifact) i.next();

      String dependency =
          artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion();

      // let preexisting dependencies take precedence
      if (!dependencies.contains(dependency)) {
        runtime.getJar().addDependency(dependency);
      }
    }
  }