最近项目想使用在maven打包的时间压缩js,css文件,采用yuicompressor-maven-plugin插件进行压缩,但只是压缩减小大小,提高请求速度,并没有对js进行混淆。下面就写一下这个插件的使用。

假设项目包含如下结构

需要把项目中设计的css和js全部压缩,但是需要配出已经压缩过的css,js文件,不然会报错。

  1. <build>
  2. <finalName>shop</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>net.alchim31.maven</groupId>
  6. <artifactId>yuicompressor-maven-plugin</artifactId>
  7. <version>1.5.1</version>
  8. <executions>
  9. <execution>
  10. <phase>prepare-package</phase>
  11. <goals>
  12. <goal>compress</goal>
  13. </goals>
  14. </execution>
  15. </executions>
  16. <configuration>
  17. <encoding>UTF-8</encoding>
  18. <jswarn>false</jswarn>
  19. <nosuffix>true</nosuffix>
  20. <linebreakpos>-1</linebreakpos>
  21. <sourceDirectory>src/main/webapp</sourceDirectory>
  22. <includes>
  23. <include>js/*.js</include>
  24. <include>wapjs/*.js</include>
  25. <include>activity/**/*.js</include>
  26. <include>admin/adminjs/*.js</include>
  27. <include>css/*.css</include>
  28. <include>activity/**/*.css</include>
  29. </includes>
  30. <excludes>
  31. <exclude>**/*min.js</exclude>
  32. <exclude>**/jweixin-1.0.0.js</exclude>
  33. <exclude>**/*min.css</exclude>
  34. </excludes>
  35. </configuration>
  36. </plugin>
  37. <plugin>
  38. <groupId>org.apache.maven.plugins</groupId>
  39. <artifactId>maven-surefire-plugin</artifactId>
  40. <version>2.4.2</version>
  41. <configuration>
  42. <skipTests>true</skipTests>
  43. </configuration>
  44. </plugin>
  45. <plugin>
  46. <groupId>org.apache.maven.plugins</groupId>
  47. <artifactId>maven-javadoc-plugin</artifactId>
  48. <version>2.9.1</version>
  49. <configuration>
  50. <javadocDirectory>target/javadoc</javadocDirectory>
  51. <reportOutputDirectory>target/javadoc</reportOutputDirectory>
  52. <charset>UTF-8</charset>
  53. <encoding>UTF-8</encoding>
  54. <docencoding>UTF-8</docencoding>
  55. <show>private</show>
  56. </configuration>
  57. </plugin>
  58. <plugin>
  59. <groupId>org.apache.maven.plugins</groupId>
  60. <artifactId>maven-war-plugin</artifactId>
  61. <version>2.6</version>
  62. <configuration>
  63. <warSourceExcludes> %regex[^.+(?:(?<!(?:-|\.)min)\.js)], %regex[^.+(?:(?<!(?:-|\.)min)\.css)]</warSourceExcludes>
  64. <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
  65. </configuration>
  66. </plugin>
  67. </plugins>
  68. <resources>
  69. <resource>
  70. <directory>src/main/resources</directory>
  71. <includes>
  72. <include>**/*.properties</include>
  73. <include>**/*.xml</include>
  74. </includes>
  75. <filtering>true</filtering>
  76. </resource>
  77. <resource>
  78. <directory>src/main/java</directory>
  79. <includes>
  80. <include>**/*.xml</include>
  81. </includes>
  82. <filtering>true</filtering>
  83. </resource>
  84. </resources>
  85. </build>
  86. 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配置说明:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-war-plugin</artifactId>
  4. <version>2.6</version>
  5. <configuration>
  6. <warSourceIncludes>**</warSourceIncludes>
  7. <warSourceExcludes> %regex[^.+(?:(?<!(?:-|\.)min)\.js)], %regex[^.+(?:(?<!(?:-|\.)min)\.css)]</warSourceExcludes>
  8. <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
  9. </configuration>
  10. 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配置<include>的文件压缩覆盖输出到target文件夹里,但是<exclude>排除掉的
文件并未放到target里,所以会导致打war包的时间未将<exclude>排除的文件为打入包中,所以此处需要
warSourceExcludes将yuicompressor没有压缩的js文件就会拷贝过去,而压缩过的js则不会拷贝yuicompressor
会拷贝压缩后的文件过去。

以下是maven打包压缩输出结果:

上面配置经过实际环境,分享一下。

Maven使用yuicompressor-maven-plugin打包压缩css、js文件的更多相关文章

  1. 批量压缩 css js 文件 包含多个文件 自动识别

    注意事项  css 注释压缩不会造成影响      因为是块注释     当然也可以选择去注释压缩 js 带注释压缩  要注意注意 注意  //行注释会造成 压缩后的代码在一行 导致注释后的代码都失效 ...

  2. 用 Flask 来写个轻博客 (28) — 使用 Flask-Assets 压缩 CSS/JS 提升网页加载速度

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 Flask-Assets 将 Flask-Assets 应用 ...

  3. vs合并压缩css,js插件——Bundler & Minifier

    之前做了一个大转盘的抽奖活动,因为比较火,部分用户反馈看不到页面的情况,我怀疑js加载请求过慢导致,所以今天针对之前的一个页面进行调试优化. 首先想到的是对页面的js和css进行压缩优化,百度了下vs ...

  4. 用GruntJS合并、压缩CSS资源文件

    合并.压缩CSS资源文件用到了grunt-contrib-concat.grunt-css插件,自己npm就可以了,下面直接呈上package.json.Gruntfile.js代码 package. ...

  5. asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    百度这些东西,还是会浪费了一些不必要的时间,记录记录以备后续 一.开启伪静态 如果不在web.config中配置管道开关则伪静态无效 首先在RouteConfig.cs中中注册路由 routes.Ma ...

  6. uglifyjs2压缩混淆js文件

    uglifyjs可以用来压缩混淆js文件,发布release版本应用利器.在StackOverflow浏览了一下,相比Google Closure和YUI compressor,uglifyjs被推荐 ...

  7. GZip压缩的js文件IE6下面不能包含<script>标签

    IE6下面,GZip压缩的js文件,如果js中包含<script>标签,一遇到这样的标签,后面的内容居然都截断了,狂晕! 花了我一个晚上来找原因.. 需要将字符串'<script&g ...

  8. js活jQuery实现动态添加、移除css/js文件

    下面是在项目中用到的,直接封装好的函数,拿去在js中直接调用就可以实现css.js文件的动态引入与删除.代码如下 动态加载,移除,替换css/js文件 // 动态添加css文件 function ad ...

  9. 在桌面右键创建html,css,js文件

    1.在开始里面输入regedit,进入注册表编辑器. 2.打开HKEY_CLASSES_ROOT项. 3.打开.html/.css/.js项. 4.右键新建项,起名ShellNew. 5.新建字符串值 ...

随机推荐

  1. 洛谷 P1013 进制位

    P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...

  2. 学一下gconv, gprof等知识

    scons.gcc.gdb.valgrind.gcov SCons 是一个用 Python 语言编写的类似于 make 工具的程序.与 make 工具相比较,SCons 的配置文件更加简单清晰明了. ...

  3. 【Android实战】Bitmap图片的截屏、模糊处理、传递、使用

    项目中遇到了这样一个需求: 当某个条件满足时就截取当前屏幕.并跳转到另外一个页面,同一时候将这个截屏图片作为下一个页面的背景图片,同一时候背景图片须要模糊处理 接下来就一步一步解决这个问题: 1.截取 ...

  4. C++对象模型——Inline Functions(第四章)

    4.5 Inline Functions 以下是Point class 的一个加法运算符的可能实现内容: class Point { friend Point operator+(const Poin ...

  5. vim 配置.vimrc文件

    下面这个.vimrc文件是根据公司里的一个前辈配置的,这里记录下,方便以后使用.它的功能,其实跟网上很多.vimrc配置的相比,还是小儿科.我记录下来,主要还是因为自己已经习惯了这个工作环境跟快捷键. ...

  6. [Codeforces558E]A Simple Task 线段树

    链接 题意:给定一个长度不超过 \(10^5\) 的字符串(小写英文字母),和不超过5000个操作. 每个操作 L R K 表示给区间[L,R]的字符串排序,K=1为升序,K=0为降序. 最后输出最终 ...

  7. google dataflow model 论文

    http://www.chinacloud.cn/show.aspx?id=24446&cid=17

  8. JavaScript--数据结构与算法之图

    图和图的算法:图的定义:由边的集合及顶点的集合组成. 例如地图,每个城镇是顶点,道路是边,由顶点对来定义(城镇1,城镇2)简称(v1,v2)顶点也有权重——成本.基本概念: 有向图:图的顶点对是有序的 ...

  9. syslog日志介绍

    一. syslog简介 syslog是一种工业标准的协议,可用来记录设备的日志.在UNIX系统,路由器.交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件.管理者可以 ...

  10. web知识—协议

    web使用超文本传输协议(HTTP,HyperText Transfer Protocol)进行通信.http在1990年左右出现,现在有0.9/1.0/1.1三个版本.在早期的互联网中的一些协议只能 ...