js,css代码压缩
web站点需要对js,css代码进行压缩,打包,下面是利用yuicompressor-maven-plugin这个maven插件进行压缩,既然是maven插件,当然的是maven项目,插件文档地址:http://alchim.sourceforge.net/yuicompressor-maven-plugin/compress-mojo.html#resources
上代码
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceExcludes>/**/*.js,/**/*.css</warSourceExcludes>
</configuration>
</plugin>
<plugin>
<!-- YUI Compressor Maven压缩插件 -->
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 读取js,css文件采用UTF-8编码默认就是utf-8的 -->
<encoding>UTF-8</encoding>
<!-- 不显示js可能的错误 -->
<jswarn>false</jswarn>
<!-- 若存在已压缩的文件,会先对比源文件是否有改动 有改动便压缩,无改动就不压缩 -->
<force>false</force>
<!-- 在指定的列号后插入新行 -->
<linebreakpos>-1</linebreakpos>
<!-- 压缩之前先执行聚合文件操作 -->
<preProcessAggregates>true</preProcessAggregates>
<!-- 压缩后保存文件后缀 无后缀 -->
<nosuffix>true</nosuffix>
<!-- 源目录,即需压缩的根目录 -->
<sourceDirectory>src/main/webapp/static</sourceDirectory>
<outputDirectory>target/static</outputDirectory>
<!-- 压缩js和css文件 -->
<includes>
<include>**/*.js</include>
<include>**/*.css</include>
</includes>
</configuration>
</plugin>
</plugins>
注意:
我在查资料时,很多人都会配置<excludes>来过滤掉已经存在的min文件,使得这些文件不被压缩,我就在想这些人是怎么编程的平常,maven中已经配置了所有js、css都不会被打包,如果你在这儿再excludes掉,那war包里就没有min了,如果你的程序里本来就没有min,那你也没有必要配置excludes啊,还有人配了excludes,为了最终能有min,写了个超级复杂的正则表达式(%regex[^.+(?:(?<!(?:-|\.)min)\.js)]),来让maven不打包那些不包含min的js、css,说着都费劲,我想说,你不写<excludes>不就完了,
说了这么多意思就是不用写<excludes>
还有就是一定要有<outputDirectory>,我看很多人不配,这会导致最终的war包中classes目录下竟然有压缩后的js和css,大写的囧,而且竟然没有一个发现这个问题,难道只有我一个人是这样???赶紧写下来记录下