使用yuicompressor-maven-plugin压缩js及css文件

使用yuicompressor-maven-plugin压缩js及css文件使用yuicompressor-maven-plugin压缩js及css文件

大家好,又见面了,我是你们的朋友全栈君。

本文介绍通过使用yuicompressor-maven-plugin插件实现js及css代码的自动压缩,方便集成到持续集成环境中,如jenkins。

一、配置yuicompressor-maven-plugin

在pom文件中增加该插件的定义,示例如下:

<plugin>        <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>            <encoding>UTF-8</encoding>        <!-- 忽略 js 错误警告 -->            <jswarn>false</jswarn>            <nosuffix>true</nosuffix>            <linebreakpos>-1</linebreakpos>            <includes>                <include>js/**/*.js</include>                <include>css/**/*.css</include>            </includes>            <excludes>                <exclude>**/**min.js</exclude>                <exclude>js/ba/**/*.js</exclude>            </excludes>        </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>
            <warSourceExcludes>js/**/*.js,css/**/*.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.

四、相关资料

插件主站地址: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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161204.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • potplayer设置快捷键[通俗易懂]

    potplayer设置快捷键[通俗易懂]引言potplayer是一款非常好用的播放器,功能齐全,且无广告,但是我在使用中按错快捷键ctrl+spotplayer就开启了一个叫采集器的东西,非常难受.话说和ctrl+s这么高频使用的快捷键冲突也太令人恼火了吧解决方法在播放区域右键鼠标打开菜单,找到选项按钮按钮????找到快捷键选项卡????添加快捷键,输入ctrl+s,然后选择未定义指令,确定,大功告成!…

    2022年5月22日
    92
  • phpstrom2021激活码_在线激活

    (phpstrom2021激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    85
  • WPFAvalonDock基本用法

    WPFAvalonDock基本用法本文简单介绍AvalonDock2.0基本用法,下载AvalonDock2.0dll及主题http://avalondock.codeplex.com/AvalonDock基本类介绍DockingManager:停靠管理类,xaml中AvalonDock的根节点LayoutRoot:布局根节点,有四个属性LeftSide,RightSide,TopSide,ButtomSide展示四

    2022年7月20日
    17
  • java并发之SynchronousQueue实现原理[通俗易懂]

    java并发之SynchronousQueue实现原理[通俗易懂]前言SynchronousQueue是一个比较特别的队列,由于在线程池方面有所应用,为了更好的理解线程池的实现原理,笔者花了些时间学习了一下该队列源码(JDK1.8),此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理。SynchronousQueue简单使用经典的生产者-消费者模式,操作流程是这样的:有多个生产者,可以并

    2022年6月22日
    79
  • C语言字符串分割

    C语言字符串分割在C语言中,内置的函数库中除了可以用strtok()来对字符串进行分割之外,还可以用sscannf()对字符串进行分割。sscanf()包含的头文件stdio.h原型intsscanf(constchar*str,constchar*format,…)实例:#include&lt;stdio.h&gt;intmain(){ charbuf[]="…

    2022年4月30日
    54
  • 匿名函数自调用_自己调用自己的函数叫

    匿名函数自调用_自己调用自己的函数叫我们知道一个HTML文件在被加载的时候是从根标签html依次往下的,在遇到link,script等标签引入的外部资源时,下载外部资源,并执行外部资源。在js中,表达式会被立即执行,也就是说,不管是引入的外部js文件还是嵌入在html文件中的js脚本,其中的表达式都会被立即执行。函数名是一个指向函数的指针。在JavaScript中,定义函数有常见的两种形式:函数声明和函数直接量(或者叫函数表达式)

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号