最近项目想使用在maven打包的时间压缩js,css文件,采用yuicompressor-maven-plugin插件进行压缩,但只是压缩减小大小,提高请求速度,并没有对js进行混淆。下面就写一下这个插件的使用。
假设项目包含如下结构
需要把项目中设计的css和js全部压缩,但是需要配出已经压缩过的css,js文件,不然会报错。
shop
net.alchim31.maven
yuicompressor-maven-plugin
1.5.1
prepare-package
compress
UTF-8
false
true
-1
src/main/webapp
js/*.js
wapjs/*.js
activity/**/*.js
admin/adminjs/*.js
css/*.css
activity/**/*.css
**/*min.js
**/jweixin-1.0.0.js
**/*min.css
org.apache.maven.plugins
maven-surefire-plugin
2.4.2
true
org.apache.maven.plugins
maven-javadoc-plugin
2.9.1
target/javadoc
target/javadoc
UTF-8
UTF-8
UTF-8
private
org.apache.maven.plugins
maven-war-plugin
2.6
%regex[^.+(?:(?
src/main/webapp/WEB-INF/web.xml
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.xml
true
lt;/project>
打包遇到的问题以及说明:
1、include标签中配置的是需要压缩的文件,exclude配置的是在include文件中排除需要压缩的文件。
2、include和exclude中可以使用通配符,*表示一个文件或路径名,**表示多个文件或路径。
3、jswarn代表是否忽略警告, nosuffix是否添加min后缀, linebreakpos是否压缩在一行。
4、net.alchim31.maven需要在org.apache.maven.plugins插件之前,否则不能够将压缩的文件打到war包里。
5、org.apache.maven.plugins配置说明:
org.apache.maven.plugins
maven-war-plugin
2.6
**
%regex[^.+(?:(?
src/main/webapp/WEB-INF/web.xml
lt;/plugin>
其中
1、warSourceIncludes不填写默认是对应 src/main/webapp下的全部文件。
2、warSourceExcludes装配warSourceIncludes中排除不以.min.js -min.js结尾的js文件。
warSourceIncludes不填写默认是对应 src/main/webapp下的全部文件,因为在
yuicompressor配置了不会处理min这些文件所以这些文件要拷贝到对应的目录。由于maven-war-plugin会把
yuicompressor配置的文件压缩覆盖输出到target文件夹里,但是排除掉的
文件并未放到target里,所以会导致打war包的时间未将排除的文件为打入包中,所以此处需要
warSourceExcludes将yuicompressor没有压缩的js文件就会拷贝过去,而压缩过的js则不会拷贝yuicompressor
会拷贝压缩后的文件过去。
以下是maven打包压缩输出结果:
上面配置经过实际环境,分享一下。