• (转)使用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] ...srcmainwebappjsScroll.js:line 371:column 11:identifier is a reserved word debugger;

    [ERROR] ...srcmainwebappjsScroll.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

    参考其他相关资料:http://blog.csdn.net/fengshizty/article/details/50541957

    转载自:http://www.cnblogs.com/gao241/p/3177268.html

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    欢迎大家关注我的个人博客 Lycos | 小站 !由于最近没时间处理,原域名http://www.liuyuchuan.com暂时停止使用

  • 相关阅读:
    Java中String的intern方法
    3.7测试复盘
    3.6测试复盘
    LTMU论文解析
    移动机器人相机模型:从相机移动到二维图像
    一步步分析MIPS数据通路(单周期)
    Slam笔记I
    如何理解SiamRPN++?
    如何使用Pytorch迅速写一个Mnist数据分类器
    PySide2的This application failed to start because no Qt platform plugin could be initialized解决方式
  • 原文地址:https://www.cnblogs.com/yuchuan/p/Js_Css_min_2.html
Copyright © 2020-2023  润新知