Package org.dstovall

Source Code of org.dstovall.TestableMojo

package org.dstovall;

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

import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.DefaultMavenProjectHelper;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.util.ReflectionUtils;
import org.junit.Ignore;

/**
* Convenient testing variation of the one-jar mojo.
*
* @author bwijsmuller
*/
@Ignore
class TestableMojo extends OneJarMojo {
 
  private static final String defaultFinalName = "default-finalname";
 
  private final MavenProject project;
  private final MavenProjectHelper projectHelper;
  private final List<Dependency> dependencies;
  private final List<Artifact> artifacts;
  private File defaultArtifact;
  private File projectTargetForTest;
 
  TestableMojo() {
    projectTargetForTest = new File(System.getProperty("java.io.tmpdir")+"/one-jar-test/");
    projectTargetForTest.mkdirs();
    projectTargetForTest.deleteOnExit();
   
    project = new MavenProject();
    projectHelper = new DefaultMavenProjectHelper();
    artifacts = new ArrayList<Artifact>();
    dependencies = new ArrayList<Dependency>();
   
    set("mainJarFilename", defaultFinalName + ".jar");

    set("dependencies", dependencies);
    set("implementationVersion", "1.0-test");
    set("outputDirectory", projectTargetForTest);
    set("filename", defaultFinalName+".one-jar.jar");
    set("classifier", "onejar");
    set("attachToBuild", false);
    set("onejarVersion", "0.97");
    set("project", project);
    set("projectHelper", projectHelper);
  }
 
  void addArtifacts(List<Artifact> arts) {
    artifacts.addAll(arts);
  }
 
  void addDependencies(List<Dependency> deps) {
    dependencies.addAll(deps);
  }
 
  /**
   * Sets a (private) field on the mojo using reflection.
   *
   * @param optionName the field name
   * @param value the value to set
   */
  void set(String optionName, Object value) {
    try {
      ReflectionUtils.setVariableValueInObject(this, optionName, value);
    } catch (IllegalAccessException e) {
      throw new RuntimeException(e.getMessage(), e);
    }
  }

  public MavenProject getProject() {
    return project;
  }
 
  public MavenProjectHelper getProjectHelper() {
    return projectHelper;
  }
 
  /**
   * Produces a file in the test target directory that can act as
   * the default artifact generated from the maven build.
   * @return this mojo
   */
  public TestableMojo useDefaultTestArtifact() {
    defaultArtifact = new File(projectTargetForTest, defaultFinalName+".jar");
    try {
      defaultArtifact.createNewFile();
    } catch (IOException e) {
      throw new RuntimeException("Could not create default test artifact.", e);
    }
    return this;
  }
 
}
TOP

Related Classes of org.dstovall.TestableMojo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.