JAva YUI圧縮JSとCSS

3969 ワード

プロジェクトはJSとCSSを圧縮する必要があります.ファイルとフォルダが多すぎて、一つ一つ処理するのが面倒です.プログラムを書きましょう.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

import org.mozilla.javascript.ErrorReporter;
import org.mozilla.javascript.EvaluatorException;

import com.yahoo.platform.yui.compressor.CssCompressor;
import com.yahoo.platform.yui.compressor.JavaScriptCompressor;


public class TestJsZip {
		//      
		static File dir=new File("E:\\js");
		
		static int linebreakpos = -1;
		static boolean munge=true;
		static boolean verbose=false;
		static boolean preserveAllSemiColons=false;
		static boolean disableOptimizations=false;
		public static void main(String[] args) throws Exception{
			checkFile(dir);
		}

		public static void checkFile(File file) throws Exception{
			File[] files=file.listFiles();
			if(files==null||files.length==0)
				return;
			
			for(File f:files){
				if(f.getName().endsWith(".svn")){
					continue;
				}
				if(f.isFile()){
					jsZip(f);
					System.out.println("  ==="+f.getName());
					continue;
				}else{
					System.out.println("  =="+f.getName());
					checkFile(f);
				}
			}
		}
		public static void jsZip(File file) throws Exception{
			String fileName=file.getName();
			if(!fileName.endsWith(".js")&&!fileName.endsWith(".css")){
				return;
			}
			Reader in = new InputStreamReader(new FileInputStream(file),"utf-8");
			String filePath=file.getAbsolutePath();
			File tempFile=new File(filePath+".tempFile");
			Writer out = new OutputStreamWriter(new FileOutputStream(tempFile),"utf-8");
			if(fileName.endsWith(".js")){
				JavaScriptCompressor jscompressor=new JavaScriptCompressor(in, new ErrorReporter() {
		            public void warning(String message, String sourceName,
		                    int line, String lineSource, int lineOffset) {
		                if (line < 0) {
		                    System.err.println("
[WARNING] " + message); } else { System.err.println("
[WARNING] " + line + ':' + lineOffset + ':' + message); } } public void error(String message, String sourceName, int line, String lineSource, int lineOffset) { if (line < 0) { System.err.println("
[ERROR] " + message); } else { System.err.println("
[ERROR] " + line + ':' + lineOffset + ':' + message); } } public EvaluatorException runtimeError(String message, String sourceName, int line, String lineSource, int lineOffset) { error(message, sourceName, line, lineSource, lineOffset); return new EvaluatorException(message); } }); jscompressor.compress(out, linebreakpos, munge, verbose, preserveAllSemiColons, disableOptimizations); }else if(fileName.endsWith(".css")){ CssCompressor csscompressor = new CssCompressor(in); csscompressor.compress(out, linebreakpos); } out.close(); in.close(); file.delete(); tempFile.renameTo(file); tempFile.delete(); } }