经过尝试,写了下面的代码,可以用了:
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.SystemUtils;
import org.xidea.jsi.tools.JSIToolkit;
import org.xidea.jsi.tools.JavaScriptCompressor;
/**
* @author Sutra
*
*/
public class JavaScriptCompress {
public static void main(String[] args) throws IOException {
Options options = new Options();
Option option = new Option("i", "input", true, "javascript file path");
option.setRequired(true);
options.addOption(option);
option = new Option("e", "encoding", true, "encoding");
option.setRequired(false);
options.addOption(option);
CommandLineParser parser = new PosixParser();
CommandLine cmd;
try {
cmd = parser.parse(options, args);
} catch (ParseException e) {
usage(options);
return;
}
String file = cmd.getOptionValue('i');
String encoding = SystemUtils.FILE_ENCODING;
if (cmd.hasOption('e')) {
encoding = cmd.getOptionValue('e');
}
JavaScriptCompressor jscompressor = JSIToolkit.getInstance()
.getCompressorImpl();
String source = FileUtils.readFileToString(new File(file), encoding);
PrintStream out = System.out;
System.setOut(new PrintStream(new java.io.ByteArrayOutputStream()));
String ret = jscompressor.compress(source, null, true, false);
out.println(ret);
}
private static void usage(Options options) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("jscompress", options);
}
}
不知道作者是不是已经提供了命令行的接口?