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

org.develrulez.thinjar.maven.plugin.MojoExecutableMojo Maven / Gradle / Ivy

package org.develrulez.thinjar.maven.plugin;

import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.BuildPluginManager;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.develrulez.thinjar.util.LazyInitializer;

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

import static org.twdata.maven.mojoexecutor.MojoExecutor.*;

public abstract class MojoExecutableMojo extends AbstractMojo {

    @Parameter( defaultValue = "${project}", readonly = true )
    private MavenProject mavenProject;

    @Parameter( defaultValue = "${session}", readonly = true )
    private MavenSession mavenSession;

    @Component
    private BuildPluginManager pluginManager;

    @Parameter( defaultValue = "${project.build.finalName}", readonly = true )
    private String finalName;

    @Component
    private MavenProjectHelper projectHelper;

    @Parameter( defaultValue = "${project.build.directory}", readonly = true )
    private File projectBuildDirectory;

    @Parameter( defaultValue = "${plugin}", readonly = true )
    private PluginDescriptor plugin;

    private LazyInitializer executionEnvironment = new LazyInitializer() {
        @Override
        protected ExecutionEnvironment initialize() {
            return executionEnvironment(mavenProject, mavenSession, pluginManager);
        }
    };

    public ExecutionEnvironment getExecutionEnvironment() {
        return executionEnvironment.get();
    }

    public PluginDescriptor getPlugin() {
        return plugin;
    }

    public String getFinalName() {
        return finalName;
    }

    public MavenProject getMavenProject() {
        return mavenProject;
    }

    public File getProjectBuildDirectory() {
        return projectBuildDirectory;
    }

    public void attachArtifact(String artifactType, String artifactClassifier, File artifactFile){
        projectHelper.attachArtifact(mavenProject, artifactType, artifactClassifier, artifactFile);
    }

    public Plugin getAssemblyPlugin(){
        return plugin(
                artifactId("org.apache.maven.plugins"),
                groupId("maven-assembly-plugin"),
                version("3.1.0"),
                getAssemblyPluginDependencies()
        );
    }

    public Plugin getDependencyPlugin(){
        return plugin(
                artifactId("org.apache.maven.plugins"),
                groupId("maven-dependency-plugin"),
                version("3.0.2"));
    }

    public Plugin getAntrunPlugin(){
        return plugin(
                artifactId("org.apache.maven.plugins"),
                groupId("maven-antrun-plugin"),
                version("1.8"));
    }

    public Plugin getLaunch4jPlugin(){
        return plugin(
                artifactId("com.akathist.maven.plugins.launch4j"),
                groupId("launch4j-maven-plugin"),
                version("1.7.21"));
    }

    private List getAssemblyPluginDependencies(){
        Dependency dependency = new Dependency();
        dependency.setGroupId(plugin.getGroupId());
        dependency.setArtifactId("thin-jar-maven-assembly-descriptors");
        dependency.setVersion(plugin.getVersion());
        return Arrays.asList(dependency);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy