All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.xp_forge.maven.plugins.xp.PackageMojo Maven / Gradle / Ivy

/**
 * This file is part of the XP-Framework
 *
 * XP-Framework Maven plugin
 * Copyright (c) 2011, XP-Framework Team
 */
package net.xp_forge.maven.plugins.xp;

import java.io.File;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;

/**
 * Package classes and resources
 *
 * @goal package
 * @requiresProject
 * @requiresDependencyResolution runtime
 */
public class PackageMojo extends AbstractPackageMojo {

  /**
   * Specify what archiver to use. There are 2 options:
   * - zip
   * - xar
   *
   * If not set, ${project.packaging} will be used
   *
   * @parameter expression="${xp.package.format}"
   */
  protected String format;

  /**
   * Packing strategy: specify what type of artifact to build. There are 2 options:
   * - lib
   * - app
   *
   * @parameter expression="${xp.package.strategy}" default-value="lib"
   * @required
   */
  protected String strategy;

  /**
   * Specify if dependencies will also be packed
   *
   * For "app" stragegy, dependencies will be packed to "lib"
   * For "lib" stragegy, dependencies will be merged to "/"
   *
   * @parameter expression="${xp.package.packDependencies}" default-value="false"
   * @required
   */
  protected boolean packDependencies;

  /**
   * Specify if XP-artifacts (core & tools) and the XP-runners should also be packed
   *
   * Bootstrap will be packed inside /lib/bootstrap
   * XP-artifacts will be packed inside /lib/runtime
   *
   * @parameter expression="${xp.package.packRuntime}" default-value="false"
   * @required
   */
  protected boolean packRuntime;

  /**
   * Specify if vendor libraries (inside ${xp.vendorLibDirectory}) should also be packed
   *
   * @parameter expression="${xp.package.packVendorLibs}" default-value="true"
   * @required
   */
  protected boolean packVendorLibs;

  /**
   * Specify main class for this artifact. used when calling [xp -xar artifact.xar]
   *
   * @parameter expression="${xp.package.mainClass}"
   */
  protected String mainClass;

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected File getClassesDirectory() {
    return this.classesDirectory;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected String getClassifier() {
    return this.classifier;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected String getFormat() {
    if (null != this.format && !this.format.isEmpty()) {
      return this.format;
    }

    // Format is not set; use ${project.packaging}
    return this.project.getPackaging();
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected String getStrategy() {
    return this.strategy;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected boolean getPackDependencies() {
    return this.packDependencies;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected boolean getPackRuntime() {
    return this.packRuntime;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected boolean getPackVendorLibs() {
    return this.packVendorLibs;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected List getAppDirectories() {
    List retVal= new ArrayList();

    // Iterate on APP_DIRECTORIES_MAP and return the list of unique values
    for (String appDirName: AbstractXpMojo.APP_DIRECTORIES_MAP.values()) {
      File appDir= new File(this.outputDirectory, appDirName);

      // Add to list; if not already added
      if (retVal.contains(appDir)) continue;
      retVal.add(appDir);
    }

    return retVal;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected String getMainClass() {
    return this.mainClass;
  }

  /**
   * {@inheritDoc}
   *
   */
  @Override
  protected boolean isSkip() {
    return false;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy