本文介绍通过使用yuicompressor-maven-plugin插件实现js及css代码的自动压缩,方便集成到持续集成环境中,如jenkins。
一、配置yuicompressor-maven-plugin
在pom文件中增加该插件的定义,示例如下:
<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>yuicompressor-maven-plugin</artifactId> <version>1.4.0</version> <executions> <execution> <!-- 在真正的打包之前,执行一些准备打包压缩操作的操作 --> <phase>prepare-package</phase> <goals> <goal>compress</goal> </goals> </execution> </executions> <configuration> <encoding>UTF-8</encoding> <!-- 忽视 js 错误警告 --> <jswarn>false</jswarn> <nosuffix>true</nosuffix> <linebreakpos>-1</linebreakpos> <!-- 压缩的文件 工程里面所有的 js css 后缀的都会压缩 --> <includes> <include>assets/**/*.js</include> <include>assets/**/*.css</include> </includes> <!-- 不需要压缩的文件 --> <excludes> <exclude>**/style.css</exclude> <exclude>**/*.min.js</exclude> <exclude>**/*.min.css</exclude> <exclude>**/*-min.js</exclude> <exclude>**/*-min.css</exclude> </excludes> <failOnWarning>false</failOnWarning> </configuration> </plugin>
1、execution表示执行的操作,可以指定操作在maven的哪个生命周期运行,不同的生命周期对打包操作会有影响,如配置在compile阶段运行压缩:
<executions> <execution> <phase>compile</phase> <goals> <goal>compress</goal> </goals> </execution> </executions>
2、经验证发现该插件运行时所在的位置是项目编译打包的输出路径,比如项目名称为abc,当前文件夹应为project_root/target/abc。maven在打包的时候会把所有编译的文件、webapp下的文件复制到该目录中为打包做准备。
3、include节点用于配置需要压缩的文件路径,可以使用通配符,*表示一个文件或路径名,**表示多个文件或路径名,exclude节点用于配置排除压缩的文件路径,exclude只会排除include中设置的路径下的文件或路径。
我的工程目录结构如下:
二、配置maven-war-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>${artifactId}</warName> <!-- 如果不增加此配置 src/main/webapp 下面的内容 会重新复制到target输出目录 覆盖掉编译后的内容 这样编译的还是未压缩过的内容,增加上此过滤 打war包就不会内容覆盖 --> <warSourceExcludes>assets/**/*.js,assets/**/*.css</warSourceExcludes> </configuration> </plugin>
在配置过程中发现无论将phase设置为哪个阶段,最终打包的文件总是原始文件,并未被压缩,后来测试发现maven-war-plugin会自动把webapp目录下的文件复制到输出路径,因此可以通过warSourceExcludes配置排除复制,的文件或路径,如上例中指定排除js目录下的所有js文件,css目录下的所有css文件。
三、常见错误
压缩js文件时,如果代码中包含debugger,yuicompressor会认为其为保留关键字,注释或删除可以使打包正常进行,也可以使用eval('debugger')替换debugger。
[ERROR] ...\src\main\webapp\js\Scroll.js:line 371:column 11:identifier is a reserved word debugger;
[ERROR] ...\src\main\webapp\js\Scroll.js:line 1:column 0:Compilation produced 1 syntax errors.
还有一些不规范的JS写法,也会报 Syntax errors,比如:
$(".fa-angle-double-left").removeClass("fa-angle-double-left").addClass(fa-angle-double-left)
上面的脚本没有以“;”结束符,样式class没有加双引号,就会报语法错误。
四、相关资料
插件主站地址:http://alchim.sourceforge.net/yuicompressor-maven-plugin/
插件配置参数:http://alchim.sourceforge.net/yuicompressor-maven-plugin/compress-mojo.html#resources
配置示例:http://www.myexception.cn/operating-system/427170.html
YUI Compressor官网:http://developer.yahoo.com/yui/compressor/
相关配置参数说明:http://alchim31.free.fr/mvnsites/yuicompressor-maven-plugin/compress-mojo.html
相关推荐
yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...
yuicompressor-maven-plugin用于maven的压缩js用
eclipse 中maven项目中的 *.js *.css 文件使用 yuicompressor-maven-plugin 插件压缩
java -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src.css > packed.css 语法: java -jar yuicompressor-x.y.z.jar [options] [input file] 通用参数: -h, --help 显示帮助信息 --type <js|...
yuicompressor-2.4.2.jar yuicompressor-2.4.7.jar jsZip.exe yuicompressor yui compressor js压缩工具 javascript压缩工具 css压缩工具 ------------------------------------ //压缩JS java -jar yuicompressor-...
用yuicompressor-2.4.7压缩你的JS和CSS 最近做了一个项目,使用了Ext框架,项目做好了,结果客户一试用,打开一个页面要6秒,这个页面是用户经常要用的,要频繁打开的,这样用户就受不了了,怎么办?怎么办?怎么...
压缩JS所使用jar包! 压缩JS:java -jar yuicompressor-2.4.jar --type js xxx.js -o xxx.js --charset utf-8 压缩CSS:java -jar yuicompressor-2.4.jar --type css xxx.css -o xxx.css --charset utf-8
maven打包使用yui压缩css和js文件
yuicompressor-2.4.8.zip js、css注释清理及压缩工具
yuicompressor.jar js/css压缩 //压缩JS java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v src.js > packed.js //压缩CSS java -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src...
jsMinifier是一个压缩JS文件的简单的工具,可以方便的集成到windowS中,使用winzip一样的去压缩JS文件(右键点击未压缩的JS文件,选择压缩javascript,然后同一目录下就会产生一个被压缩后的JS文件),并且压缩效果...
YUICompressor在压缩的过程中无法合并文件,如处理10个文件只能生成10个文件,于是写了一个自动化脚本,只需修改一下criptList.txt文件,及可将里边的文件合并压缩成一个文件。 注:jar包是在win7 32位环境下编译
JS压缩工具、前端优化神器、yuicompressor-2.4.8.jar、
该工具可以压缩js和css代码
yuicompressor-2.4.2.jar 对javascript, CSS资源进行压缩
webstorm/phpstorm处理Javascript和css压缩必备。下载后在工具文件-设置-工具集 - file watchers配置即可,详细使用方式不清楚可以@我