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

假设项目包含如下结构

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

 <build><finalName>shop</finalName><plugins><plugin><groupId>net.alchim31.maven</groupId><artifactId>yuicompressor-maven-plugin</artifactId><version>1.5.1</version><executions><execution><phase>prepare-package</phase><goals><goal>compress</goal></goals></execution></executions><configuration><encoding>UTF-8</encoding><jswarn>false</jswarn><nosuffix>true</nosuffix><linebreakpos>-1</linebreakpos><sourceDirectory>src/main/webapp</sourceDirectory><includes><include>js/*.js</include><include>wapjs/*.js</include><include>activity/**/*.js</include><include>admin/adminjs/*.js</include><include>css/*.css</include><include>activity/**/*.css</include></includes><excludes><exclude>**/*min.js</exclude><exclude>**/jweixin-1.0.0.js</exclude><exclude>**/*min.css</exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.4.2</version><configuration><skipTests>true</skipTests></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.9.1</version><configuration><javadocDirectory>target/javadoc</javadocDirectory><reportOutputDirectory>target/javadoc</reportOutputDirectory><charset>UTF-8</charset><encoding>UTF-8</encoding><docencoding>UTF-8</docencoding><show>private</show></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><warSourceExcludes> %regex[^.+(?:(?<!(?:-|\.)min)\.js)], %regex[^.+(?:(?<!(?:-|\.)min)\.css)]</warSourceExcludes><webXml>src/main/webapp/WEB-INF/web.xml</webXml></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
</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配置说明:

                       <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><warSourceIncludes>**</warSourceIncludes><warSourceExcludes> %regex[^.+(?:(?<!(?:-|\.)min)\.js)], %regex[^.+(?:(?<!(?:-|\.)min)\.css)]</warSourceExcludes><webXml>src/main/webapp/WEB-INF/web.xml</webXml></configuration></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. Flask-Assets 使用autoprefixer并压缩css/JS文件提高访问速度

    扩展阅读 http://flask-assets.readthedocs.io/en/latest/  Flask-Assets实例学习  Flask-Assets中文参考 Flask-Assets ...

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

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

  3. 利用html-minifier和uglify-js对前端HTML/CSS/JS文件进行压缩

    利用html-minifier和uglify-js对前端HTML/CSS/JS文件进行压缩 前言:最近项目组项目接近完工,因为是个网站改造项目,大多数页面都是静态页面,前端开发并没有使用框架或工程化的 ...

  4. 在线压缩html/css/js文件成一行

    在线压缩html/css/js文件成一行: 压缩网站为:http://tool.oschina.net/jscompress/ 将源码压缩成一行,去掉文中的一些注释和空格以及空行,好处是: 1.减小文 ...

  5. vue webpack压缩代码_webpack不混淆、不压缩指定js文件

    在项目中使用了mozilla/pdf.js,在使用中需要设置GlobalWorkerOptions.workerSrc,代码如下 import PDFJS from 'pdfjs-dist' impo ...

  6. vue打包生成的js文件过大优化

    vue打包生成的js文件过大优化 1.组件按需加载 2.去掉生成map文件 3.cdn引入 4.路由懒加载 5.代码压缩 6.最后 项目打包之后js文件太大问题 问题描述 1.使用cdn引入不怎么改变 ...

  7. 怎压缩html文件夹,如何利用koala压缩合并js文件?

    本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 苏南大叔在很久之前的文章中,曾经向大家介绍过一款很好用的js和css处理工具,叫做koala.据说是国人基于n ...

  8. 压缩/批量压缩/合并js文件

    写在前面 如果文件少的话,直接去网站转化一下就行. http://tool.oschina.net/jscompress?type=3 1.压缩单个js文件 cnpm install uglify-j ...

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

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

  10. webpack打包php资源,webpack不打包指定的js文件

    背景: 在项目实际开发中,有一些IP地址需要随时修改,进行部署,例如websocket的地址.因此在项目打包的时候,不希望保持IP地址的文件被打包,因此就需要把需要修改的常量独立出来,存放在一个js文 ...

最新文章

  1. 【Netty】Netty线程模型和EventLoop
  2. 吴恩达邀请9位AI大牛畅想2020:李开复看好医疗教育,LeCun强调自监督学习
  3. Django模拟新浪微博的@功能
  4. MongoDB 征途
  5. java多线程 异常处理_Java8多线程ForkJoinPool:处理异常
  6. leetcode491. 递增子序列(回溯算法)
  7. redis aof 备份和恢复_深入理解Redis持久化
  8. 【linux】——FTP出现500 OOPS: cannot change directory的解决方法
  9. 动态改变 itemRenderer 。
  10. Python高阶函数-闭包
  11. JDK8编译,JDK8运行错误
  12. 金蝶服务器选项没有账套信息,金蝶财务软件帐套属性设置保存和帐套启用报错的解决方法...
  13. Python量化分析,计算KDJ
  14. Flink DataStream Keyed和Non-Keyed窗口、WindowAssigner、窗口生命周期、窗口函数、迟到数据和窗口结果的处理
  15. 解读《大话西游之大圣娶亲》
  16. flask的一个小项目
  17. 64位处理器_64位系统真的比32位系统快吗?
  18. 硅谷再撒钱:公司暴力涨薪,HR“大打出手”,这场人才战富了谁?
  19. 龙芯与飞腾roadmap
  20. 「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)

热门文章

  1. APNs Push Notification教程一
  2. arcgis 合并名字相同的要素_【转】ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析...
  3. 2008服务器系统只有回收站,清除Windows Server 2008 R2中所有用户的回收站
  4. 480.滑动窗口中位数
  5. 375.猜数字大小II
  6. Linux 查找满足条件的文件并复制
  7. 估计理论(1):最小方差无偏估计(第2章)
  8. 斯坦福大学自然语言处理第三课“最小编辑距离(Minimum Edit Distance)”
  9. leetcode 65. Valid Number
  10. 卡方分布的latex代码