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

de.sstoehr.imageoptimizermavenplugin.ImageOptimizerMojo Maven / Gradle / Ivy

package de.sstoehr.imageoptimizermavenplugin;


import de.sstoehr.imageoptimizermavenplugin.jobs.Job;
import de.sstoehr.imageoptimizermavenplugin.jobs.JobRunner;
import de.sstoehr.imageoptimizermavenplugin.optimizers.JpegOptim;
import de.sstoehr.imageoptimizermavenplugin.optimizers.Optimizer;
import de.sstoehr.imageoptimizermavenplugin.optimizers.PngQuant;
import de.sstoehr.imageoptimizermavenplugin.optimizers.UnsupportedOptimizerException;
import net.oneandone.sushi.fs.Node;
import net.oneandone.sushi.fs.World;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Mojo(name = "optimize", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, requiresProject = true)
public class ImageOptimizerMojo extends AbstractMojo {

    private static final Logger LOG = LoggerFactory.getLogger(ImageOptimizerMojo.class);

    @Parameter
    private String jpegFilter = "**/*.jpg,**/*.jpeg,**/*.JPG,**/*.JPEG";

    @Parameter
    private String pngFilter = "**/*.png,**/*.PNG";

    @Parameter(property = "optimize.basedir", defaultValue = "${basedir}")
    private String basedir;

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {

        World world = new World();
        Node base = world.file(basedir);

        JobRunner jobRunner = new JobRunner(base);

        if (!this.jpegFilter.equalsIgnoreCase("false")) {
            Optimizer jpegOptimizer = null;
            try {
                jpegOptimizer = new JpegOptim();
            } catch (UnsupportedOptimizerException e) {
                LOG.info("JpegOptim is not installed: https://github.com/sdstoehr/image-optimizer-maven-plugin/wiki/Install");
            }

            if (jpegOptimizer != null) {
                Job jpegJob = new Job("JPEG", base, this.jpegFilter, jpegOptimizer);
                jobRunner.schedule(jpegJob);
            }
        }

        if (!this.pngFilter.equalsIgnoreCase("false")) {
            Optimizer pngOptimizer = null;
            try {
                pngOptimizer = new PngQuant();
            } catch (UnsupportedOptimizerException e) {
                LOG.info("PngQuant is not installed: https://github.com/sdstoehr/image-optimizer-maven-plugin/wiki/Install");
            }

            if (pngOptimizer != null) {
                Job pngJob = new Job("PNG", base, this.pngFilter, pngOptimizer);
                jobRunner.schedule(pngJob);
            }
        }

        jobRunner.run();

    }



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy