Package com.alexkasko.krakatau.maven

Source Code of com.alexkasko.krakatau.maven.KrakatauDecompileMojo

package com.alexkasko.krakatau.maven;

import com.alexkasko.krakatau.KrakatauLibrary;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;

/**
* Decompile class files into Java sources using Krakatau python library
*
* @goal decompile
* @requiresDependencyResolution
*
* @author alexkasko
* Date: 10/1/13
*/
public class KrakatauDecompileMojo extends AbstractMojo {

    /**
     * List of fully-qualified class names
     *
     * @parameter expression="${classNames}"
     * @required
     */
    private String[] classNames;
    /**
     * Lists of root class directories to add to classpath
     *
     * @parameter expression="${classDirs}"
     * @required
     */
    private File[] classDirs;
    /**
     * Output directory
     *
     * @parameter expression="${outputDir}"
     * @required
     */
    private File outputDir;
    /**
     * @parameter default-value="${project}"
     * @required
     * @readonly
     */
    private MavenProject project;

    /**
     * {@inheritDoc}
     */
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        KrakatauLibrary lib = new KrakatauLibrary();
        Set<Artifact> deps = project.getDependencyArtifacts();
        List<File> classpath = new ArrayList<File>(deps.size());
        for(Artifact ar : deps) {
            classpath.add(ar.getFile());
        }
        for(File fi : classDirs) {
            classpath.add(fi);
        }
        if(!outputDir.exists()) outputDir.mkdirs();
        lib.decompile(classpath, Arrays.asList(classNames), outputDir);
    }
}
TOP

Related Classes of com.alexkasko.krakatau.maven.KrakatauDecompileMojo

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.