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

cn.dreampie.MinifierMojo Maven / Gradle / Ivy

The newest version!
package cn.dreampie;

import com.google.common.collect.Lists;
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.apache.maven.plugins.annotations.ResolutionScope;

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

/**
 * Copyright 2011 Mark Derricutt.
 * 

* Contributing authors: * Daniel Bower *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *

* Minify JavaScript with Maven */ @Mojo(name = "minify", defaultPhase = LifecyclePhase.PROCESS_CLASSES, requiresDependencyResolution = ResolutionScope.COMPILE) public class MinifierMojo extends AbstractMojo { /** * Location of the Files to Minify. Defaults to ${build.directory}/coffee */ @Parameter(defaultValue = "${project.basedir}/src/main/javascript") private File sourceDirectory; /** * The set of files that should be minified. Be sure to specify the path to the compiled *

* Only one or the other of files or directoryOfFilesToMinify should be specified. Only files is used if both are specified. */ @Parameter private File[] includeFiles; @Parameter private File[] excludeFiles; @Parameter(defaultValue = "${project.basedir}/src/main/webapp/javascript/${project.artifactId}-${project.version}.min.js") private File outputFile; @Parameter(defaultValue = "${project.basedir}/src/main/webapp/javascript") private File outputDirectory; @Parameter(defaultValue = "false") private boolean merge; @Parameter(defaultValue = "false") private boolean skip; public void execute() throws MojoExecutionException, MojoFailureException { LogKit.setLog(getLog()); try { getLog().info("Minifying all Javascript Files in the Output Directory"); ClosureMinifier minifier = new ClosureMinifier(); minifier.setSourceDirectory(sourceDirectory); List filesToMinify; if (null != includeFiles) { filesToMinify = Lists.newArrayList(includeFiles); getLog().info("About to include the following files: " + FileUtilities .getCommaSeparatedListOfFileNames(filesToMinify)); } else { getLog().debug("No file to include,use sourceDirectory."); filesToMinify = FileUtilities.directoryToFileList(sourceDirectory); } List filesToMinifyMinusDestFile = null; if (null != excludeFiles) { filesToMinifyMinusDestFile = getMinifyFiles(filesToMinify, Lists.newArrayList(excludeFiles)); } else { filesToMinifyMinusDestFile = filesToMinify; } if (filesToMinifyMinusDestFile != null && filesToMinifyMinusDestFile.size() > 0) { getLog().info("About to minify the following files: " + FileUtilities .getCommaSeparatedListOfFileNames(filesToMinifyMinusDestFile)); } else { getLog().info("No file to minify."); } if (merge) { minifier.compile(filesToMinifyMinusDestFile, outputFile); } else { minifier.setOutputDirectory(outputDirectory); minifier.compile(filesToMinifyMinusDestFile); } } catch (Exception e) { throw new MojoExecutionException(e.getMessage(), e); } } private List getMinifyFiles(List filesToMinify, List outFiles) { if (outFiles != null && outFiles.size() > 0) { getLog().info("About to exclude the following files: " + FileUtilities .getCommaSeparatedListOfFileNames(outFiles)); List filesToMinifyMinusDestFile = Lists.newArrayList(); for (File file : filesToMinify) { if (file.isDirectory()) { filesToMinifyMinusDestFile.addAll(FileUtilities.directoryToFileList(file)); } else { filesToMinifyMinusDestFile.add(file); } } for (File outFile : outFiles) { if (outFile.isDirectory()) { if (outFile.isDirectory()) { filesToMinifyMinusDestFile.removeAll(FileUtilities.directoryToFileList(outFile)); } else { filesToMinifyMinusDestFile.remove(outFile); } } } return filesToMinifyMinusDestFile; } else { getLog().info("No file to exclude."); return filesToMinify; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy