@Override
  protected void executeWithGems()
      throws MojoExecutionException, ScriptException, IOException, GemException {

    if (includeRubyResources != null) {
      // add it to the classpath so java classes can find the ruby files
      Resource resource = new Resource();
      resource.setDirectory(project.getBasedir().getAbsolutePath());
      for (String include : includeRubyResources) {
        resource.addInclude(include);
      }
      if (excludeRubyResources != null) {
        for (String exclude : excludeRubyResources) {
          resource.addExclude(exclude);
        }
      }
      addResource(project.getBuild().getResources(), resource);
    }

    if (includeBinStubs) {
      Resource resource = new Resource();
      resource.setDirectory(gemsConfig.getBinDirectory().getAbsolutePath());
      resource.addInclude("*");
      resource.setTargetPath("META-INF/jruby.home/bin");
      addResource(project.getBuild().getResources(), resource);
    }
  }
  private List<Resource> getResources() {
    Resource appFolderResource = new Resource();
    appFolderResource.setDirectory(this.appDirectory.getAbsolutePath());
    appFolderResource.setFiltering(true);

    return Arrays.asList(appFolderResource);
  }
  public void execute() throws MojoExecutionException {

    AetherUtil.setRepositorySystemSession(repoSession);
    AetherUtil.setRepositorySystem(repoSystem);

    mergerComponent = new KevoreeMergerComponent();

    ContainerRoot model = KevoreeFactory.createContainerRoot();

    if (sourceMarShellDirectory != null) {
      ContainerRoot model2 = executeOnDirectory(sourceMarShellDirectory);
      mergerComponent.merge(model, model2);
    }

    if (sourceMarShellDirectory2 != null) {
      ContainerRoot model2 = executeOnDirectory(sourceMarShellDirectory2);
      mergerComponent.merge(model, model2);
    }

    if (!sourceOutputDirectory.exists() && !sourceOutputDirectory.mkdirs()) {
      throw new MojoExecutionException(
          "Unable to build target packages " + sourceOutputDirectory.getAbsolutePath());
    }

    KevoreeXmiHelper.save(
        sourceOutputDirectory.getAbsolutePath() + File.separator + "lib.kev", model);

    Resource resource = new Resource();
    resource.setTargetPath("KEV-INF");
    resource.setDirectory(sourceOutputDirectory.getAbsolutePath());

    project.addResource(resource);
  }
  /**
   * make room for a Manifest file. use a generated resource for JARS and for WARS use the manifest
   * in the webapp/meta-inf directory.
   *
   * @throws MojoExecutionException
   */
  private void addManifestResource(EclipseWriterConfig config) throws MojoExecutionException {
    if (isJavaProject()) {
      // special case must be done first because it can add stuff to the classpath that will be
      // written by the superclass
      new RadManifestWriter().init(getLog(), config).write();
    }

    if (isJavaProject()
        && !Constants.PROJECT_PACKAGING_EAR.equals(packaging)
        && !Constants.PROJECT_PACKAGING_WAR.equals(packaging)
        && !Constants.PROJECT_PACKAGING_EJB.equals(packaging)
        && !NO_GENERATED_RESOURCE_DIRNAME.equals(this.generatedResourceDirName)) {

      String generatedResourceDir =
          this.project.getBasedir().getAbsolutePath()
              + File.separatorChar
              + this.generatedResourceDirName;

      String metainfDir = generatedResourceDir + File.separatorChar + "META-INF";

      new File(metainfDir).mkdirs();

      final Resource resource = new Resource();

      getLog().debug("Adding " + this.generatedResourceDirName + " to resources");

      resource.setDirectory(generatedResourceDir);

      this.executedProject.addResource(resource);
    }

    if (Constants.PROJECT_PACKAGING_WAR.equals(packaging)) {
      new File(getWebContentBaseDirectory(config) + File.separatorChar + "META-INF").mkdirs();
    }
  }
  private void addOutputToSourcesIfNeeded() {
    final Boolean add = addOutputDirectoryToCompilationSources;
    if (add == null || add.booleanValue()) {
      getLog().info("Source directory: " + outputDirectory + " added");
      addCompileSourceRoot(project, outputDirectory.getAbsolutePath());
      getLog().info("Resource directory: " + outputDirectory + " added");

      Resource resourceDirectory = new Resource();
      resourceDirectory.setDirectory(outputDirectory.getAbsolutePath());
      project.addResource(resourceDirectory);
    }
  }
  protected void includeDescriptorResource() {

    final Resource resource = new Resource();

    final String sourcePath = outputDirectorySCR().getPath();
    final String targetPath = targetDirectorySCR;

    resource.setDirectory(sourcePath);
    resource.setTargetPath(targetPath);

    getLog().info("");
    getLog().info("including descriptor resource = " + resource);

    project.addResource(resource);
  }
 private MavenProject createMavenProject(String projectRootPath) throws IOException {
   File projectFile = new File(projectRootPath + "/pom.xml").getAbsoluteFile();
   MavenProject project = new MavenProject();
   project.setFile(projectFile);
   project
       .getBuild()
       .setOutputDirectory(
           projectFile
               .getParentFile()
               .toPath()
               .resolve("target/classes")
               .toFile()
               .getCanonicalPath());
   Resource resource = new Resource();
   resource.setDirectory(new File(projectRootPath + "/src/main/resources").getAbsolutePath());
   project.getResources().add(resource);
   return project;
 }
  public MojoProjectStub(File projectDir) {
    this.basedir = projectDir;
    props.setProperty("basedir", this.basedir.getAbsolutePath());

    File pom = new File(getBasedir(), "plugin-config.xml");
    MavenXpp3Reader pomReader = new MavenXpp3Reader();
    Model model = null;
    FileReader fileReader = null;

    try {
      fileReader = new FileReader(pom);
      model = pomReader.read(fileReader);
      setModel(model);
    } catch (Exception e) {
      throw new RuntimeException(e);
    } finally {
      IOUtils.closeQuietly(fileReader);
    }

    setGroupId(model.getGroupId());
    setArtifactId(model.getArtifactId());
    setVersion(model.getVersion());
    setName(model.getName());
    setUrl(model.getUrl());
    setPackaging(model.getPackaging());
    setFile(pom);

    build = model.getBuild();
    if (build == null) {
      build = new Build();
    }

    File srcDir = getStandardDir(getBuild().getSourceDirectory(), "src/main/java");
    getBuild().setSourceDirectory(srcDir.getAbsolutePath());

    File targetDir = getStandardDir(getBuild().getDirectory(), "target");
    getBuild().setDirectory(targetDir.getAbsolutePath());

    File outputDir = getStandardDir(getBuild().getOutputDirectory(), "target/classes");
    getBuild().setOutputDirectory(outputDir.getAbsolutePath());

    List<Resource> resources = new ArrayList<Resource>();
    resources.addAll(getBuild().getResources());

    if (resources.isEmpty()) {
      resources = new ArrayList<Resource>();
      Resource resource = new Resource();
      File resourceDir = normalize("src/main/resources");
      resource.setDirectory(resourceDir.getAbsolutePath());
      makeDirs(resourceDir);
      resources.add(resource);
    } else {
      // Make this project work on windows ;-)
      for (Resource resource : resources) {
        File dir = normalize(resource.getDirectory());
        resource.setDirectory(dir.getAbsolutePath());
      }
    }

    getBuild().setResources(resources);
  }
  @Override
  public void execute() throws MojoExecutionException, MojoFailureException {
    try {
      URL url = new URL(war);
      String targetFile = url.getFile().substring(url.getFile().lastIndexOf('/') + 1);
      File tempWarFile = new File(tempWar.getAbsolutePath() + File.separator + targetFile);
      if (!tempWarFile.exists()) {
        getLog().info("Dowloading = " + war + " -> " + tempWarFile.getAbsolutePath());
        UrlHelper.getFile(war, tempWarFile);
      }
      File previous = new File(tempWar.getAbsolutePath() + File.separator + "extracted");
      if (previous.exists()) {
        previous.delete();
      }
      previous = new File(tempWar.getAbsolutePath() + File.separator + "extracted");

      Resource res = new Resource();
      res.setDirectory(filteredWar.getAbsolutePath());

      project.getResources().add(res);
      String[] names = new String[0];
      if (filtered != null) {
        names = filtered.split(",");
        for (String name : Arrays.asList(names)) {
          System.out.println("Filter=" + name);
        }
      }

      ZipHelper.unzipToTempDir(tempWarFile, previous, Arrays.asList(names));
      if (!filteredWar.exists()) {
        filteredWar.mkdirs();
      }

      ZipHelper.zipFolder(
          previous.getAbsolutePath(), filteredWar.getAbsolutePath() + File.separator + targetFile);

      /*
                  ZipHelper.unzipToTempDir(tempWarFile, outputClasses)
                  BundlerHelper.copyWebInf(outputClasses);

                  String sjars = singletonJars;
                  if(sjars == null){
                      sjars = "";
                  }
                  String[] lsjars = sjars.split(",");

                  BundlerHelper.generateManifest(project, outputClasses,lsjars);

                  Resource resource = new Resource();
                  resource.setDirectory(outputClasses.getPath());
                  project.getResources().add(resource);

                  Resource resource2 = new Resource();
                  resource2.setDirectory(sourceOutputDirectory.getPath()+File.separator+"KEV-INF");
                  resource2.setTargetPath("KEV-INF");
                  project.getResources().add(resource2);

      */
      // GENERATE KEVOREE COMPONENT WRAPPER
      /*
                  Dependency dep = new Dependency();
                  dep.setArtifactId("org.kevoree.library.javase.webserver.servlet");
                  dep.setGroupId("org.kevoree.library.javase");
                  dep.setVersion(KevoreeFactory.getVersion());
                  dep.setType("bundle");
                  dep.setScope("compile");
                  project.getCompileDependencies().add(dep);

                  Dependency dep2 = new Dependency();
                  dep2.setArtifactId("org.kevoree.library.javase.webserver");
                  dep2.setGroupId("org.kevoree.library.javase");
                  dep2.setVersion(KevoreeFactory.getVersion());
                  dep2.setType("bundle");
                  dep2.setScope("compile");
                  project.getCompileDependencies().add(dep2);
      */
      /*
      Dependency dep3 = new Dependency();
      dep3.setArtifactId("org.kevoree.extra.jetty");
      dep3.setGroupId("org.kevoree.extra");
      dep3.setVersion("8.1.0.RC2");
      dep3.setType("bundle");
      dep3.setScope("compile");
      project.getCompileDependencies().add(dep3);*/

      // WrapperGenerator.generate(sourceOutputDirectory,project,BundlerHelper.getWebInfParams(outputClasses),lsjars);

      // project.getBuild().setSourceDirectory(sourceOutputDirectory.getAbsolutePath());

    } catch (Exception e) {
      e.printStackTrace();
      getLog().error(e);
    }
  }
 protected Resource createResource(String resourceDirectory) {
   Resource resource = new Resource();
   resource.setDirectory(resourceDirectory);
   return resource;
 }