`

使用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.4.0</version>
				<executions>
					<execution>
						<!-- 在真正的打包之前,执行一些准备打包压缩操作的操作 -->
						<phase>prepare-package</phase>
						<goals>
							<goal>compress</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<encoding>UTF-8</encoding>
					<!-- 忽视 js 错误警告 -->
					<jswarn>false</jswarn>
					<nosuffix>true</nosuffix>
					<linebreakpos>-1</linebreakpos>
					<!-- 压缩的文件 工程里面所有的 js css 后缀的都会压缩 -->
					<includes>
						<include>assets/**/*.js</include>
						<include>assets/**/*.css</include>
					</includes>
					<!-- 不需要压缩的文件 -->
					<excludes>
						<exclude>**/style.css</exclude>
						<exclude>**/*.min.js</exclude>
						<exclude>**/*.min.css</exclude>
						<exclude>**/*-min.js</exclude>
						<exclude>**/*-min.css</exclude>
					</excludes>
					<failOnWarning>false</failOnWarning>
				</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>
					<!-- 如果不增加此配置 src/main/webapp 下面的内容 会重新复制到target输出目录 覆盖掉编译后的内容 这样编译的还是未压缩过的内容,增加上此过滤 
						打war包就不会内容覆盖 -->
					<warSourceExcludes>assets/**/*.js,assets/**/*.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.

 

还有一些不规范的JS写法,也会报 Syntax errors,比如:

$(".fa-angle-double-left").removeClass("fa-angle-double-left").addClass(fa-angle-double-left)

 上面的脚本没有以“;”结束符,样式class没有加双引号,就会报语法错误。

 

四、相关资料

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

 

YUI Compressor官网:http://developer.yahoo.com/yui/compressor/

相关配置参数说明:http://alchim31.free.fr/mvnsites/yuicompressor-maven-plugin/compress-mojo.html

 

  • 大小: 16.3 KB
分享到:
评论

相关推荐

    yuicompressor-maven-plugin

    `yuicompressor-maven-plugin`是一款强大的Maven插件,主要用于优化前端资源,特别是JavaScript和CSS文件。这个插件是基于YUI Compressor,一个由Yahoo开发的开源工具,它能有效地压缩和混淆代码,从而减少文件大小...

    yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件.zip

    yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...

    eclipse yuicompressor-maven-plugin

    - **配置插件**:在Maven的`pom.xml`文件中添加`yuicompressor-maven-plugin`的配置,指定要压缩的文件路径、输出路径、是否开启混淆等参数。 ```xml &lt;plugin&gt; &lt;groupId&gt;net.alchim31.maven&lt;/groupId&gt; ...

    maven打包使用yui压缩css和js文件

    在Maven中实现这个功能,我们需要借助maven-assembly-plugin或者maven-war-plugin,但更常见的是使用maven-resources-plugin和maven-compiler-plugin配合yuicompressor-maven-plugin。以下是一个详细的步骤说明: 1...

    maven+yui压缩js,css文件

    标题与描述概述的知识点是关于如何使用Maven与YUI Compressor插件来压缩JavaScript(JS)和CSS文件。在大型项目中,压缩这些文件可以显著减少加载时间,提高网站性能,同时也便于资源的管理。 ### Maven与YUI ...

    java开发中压缩js,css文件

    例如,Maven的`maven-resources-plugin`和`maven-war-plugin`可以配合使用`yuicompressor-maven-plugin`来完成js和css的压缩。在Gradle中,我们可以使用`apply plugin: '...

    行业分类-外包设计-基于Maven的前台资源打包并进行版本管理与使用的方法的说明分析.rar

    Maven还可以通过插件如`yui-compressor-maven-plugin`或`uglifyjs-maven-plugin`来对前端资源进行压缩,减少文件大小,提高页面加载速度。 9. **多环境配置**: 使用Maven的profile功能,可以为不同环境(如开发...

    mvn 配置 yui 自动 打包

    当我们谈论"mvn 配置 yui 自动 打包"时,我们实际上是在讨论如何利用Maven(mvn)这个流行的Java项目管理工具,配合YUI Compressor(yuicompressor)进行资源文件的压缩和优化,以实现项目的自动打包流程。...

    google-app-engine-jappstart:Google App Engine的Java框架

    特征Appstats支持Google AJAX库API(jQuery) 墓碑整合JRebel支持本地开发控制台支持( ) Maven支持通过yuicompressor-maven-plugin进行CSS / JS压缩使用maven-gae-plugin 远程API /批量加载程序支持Sitemesh集成...

    org.apache.servicemix.bundles.spring-jdbc-4.0.2.RELEASE_1.zip

    Minify Maven Plugin可以自动处理这些任务,它支持YUI Compressor和Google Closure Compiler等工具进行压缩,能有效减小文件体积,提升网站性能。 总结起来,这个压缩包包含了Apache ServiceMix中的Spring JDBC模块...

Global site tag (gtag.js) - Google Analytics