YUI Compressor插件压缩后war中的js/css文件未压缩的解决方法(被maven打包顶替了)

YUI Compressor插件压缩后war中的js/css文件未压缩的解决方法(被maven打包顶替了)YUICompressorMaven插件可以压缩/合并js或css文件,经常用在Maven项目中,但最近发现在wabapp中执行了mvninstall命令进行发布之后,终端中显示插件已经执行了压缩的动作,但在输出文件夹或者war包中js和css文件都还是未压缩的原始文件。这样执行mvninstall命令之后发现虽然执行了压缩任务,但是在目标目录下和war包中的js和css…

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

YUI Compressor Maven插件可以压缩/合并js或css文件,经常用在Maven项目中,但最近发现在wabapp中执行了 mvn install 命令进行发布之后,终端中显示插件已经执行了压缩的动作,但在输出文件夹或者war包中js和css文件都还是未压缩的原始文件。

 

这样执行 mvn install 命令之后发现虽然执行了压缩任务,但是在目标目录下和war包中的js和css文件都是未经过压缩的文件。经过分析应该是执行顺序的问题,即yuicompress是在process-resources阶段首先执行的,然后是war命令拷贝原始的资源文件到目标目录,这个时候就将前面压缩过的文件覆盖了。

于是将yuicompressor-maven-plugin中execution的phase修改为install,再执行 mvn install 命令之后发现最终目标目录中的js和css文件已经是压缩过的了,但是war包里面的还是未压缩的。顺便说一句,在maven 2.x不需要显示地指定phase的,3.x之后必须指定。将phase修改为install是将压缩的执行顺序放到最后阶段,也就是说复制资源文件在前,压缩在后,但在war包生成之后,因此war包中的js和css文件是未经过压缩的。

项目./pom.xml文件相关内容如下:

springboot中不存在该问题:

<plugin>
                <!-- YUI Compressor Maven压缩插件 -->
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <version>1.5.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compress</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 读取js,css文件采用UTF-8编码 -->
                    <encoding>UTF-8</encoding>
                    <!-- 不显示js可能的错误 -->
                    <jswarn>true</jswarn>
                    <!-- 若存在已压缩的文件,会先对比源文件是否有改动  有改动便压缩,无改动就不压缩 -->
                    <force>false</force>
                    <!-- 在指定的列号后插入新行 -->
                    <linebreakpos>-1</linebreakpos>
                    <!-- 压缩之前先执行聚合文件操作 -->
                    <preProcessAggregates>true</preProcessAggregates>
                    <!-- 压缩后保存文件后缀 无后缀 -->
                    <nosuffix>true</nosuffix>
                    <!-- 源目录,即需压缩的根目录 -->
                    <sourceDirectory>src/main/resources/static</sourceDirectory>
                    <!-- 输出目录,即压缩后的目录-->
                    <outputDirectory>target/classes</outputDirectory>
                    <force>true</force>
                    <!-- 压缩js和css文件 -->
                    <includes>
                        <include>**/*.js</include>
                        <include>**/*.css</include>
                    </includes>
                    <!-- 以下目录和文件不会被压缩 -->
                    <excludes>
                        <exclude>**/*.min.js</exclude>
                        <exclude>**/*.min.css</exclude>
                        <!-- 这个文件语法有问题,编译不过,在此忽略掉 -->
                        <exclude>**/fileinput.js</exclude>
                    </excludes>
                </configuration>
            </plugin>

传统spring中:

<plugin>
				<!-- YUI Compressor Maven压缩插件 -->
				<groupId>net.alchim31.maven</groupId>
				<artifactId>yuicompressor-maven-plugin</artifactId>
				<version>1.5.1</version>
				<executions>
					<execution>
						<phase>compile</phase>
						<goals>
							<goal>compress</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<!-- 读取js,css文件采用UTF-8编码 -->
					<encoding>UTF-8</encoding>
					<!-- 不显示js可能的错误 -->
					<jswarn>true</jswarn>
					<!-- 若存在已压缩的文件,会先对比源文件是否有改动  有改动便压缩,无改动就不压缩 -->
					<force>false</force>
					<!-- 在指定的列号后插入新行 -->
					<linebreakpos>-1</linebreakpos>
					<!-- 压缩之前先执行聚合文件操作 -->
					<preProcessAggregates>true</preProcessAggregates>
					<!-- 压缩后保存文件后缀 无后缀 -->
					<nosuffix>true</nosuffix>
					<!-- 源目录,即需压缩的根目录 -->
					<sourceDirectory>src/main/webapp/ui</sourceDirectory>
					<!-- 输出目录,即压缩后的目录-->
					<outputDirectory>target/bjbj/ui</outputDirectory>
					<force>true</force>
					<!-- 压缩js和css文件 -->
					<includes>
						<include>**/*.js</include>
						<include>**/*.css</include>
					</includes>
					<!-- 以下目录和文件不会被压缩 -->
					<excludes>
						<exclude>**/*.min.js</exclude>
						<exclude>**/*.min.css</exclude>
						<exclude>**/bootstrap-table-common.js</exclude>
						<exclude>**/wangEditor.js</exclude>
					</excludes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>3.0.0</version>
				<configuration>
					<!--yuicompressor插件排除的文件,需要在打包时从新导入进来,因此需要在排除js/css文件中,忽略掉这些需要引入的文件-->
					<!--忽略文件名添加在((?:-|\.)min|bootstrap-table-common|wangEditor)中,用|隔开-->
					<warSourceExcludes>
						<![CDATA[
						%regex[^.+(?:(?<!((?:-|\.)min|bootstrap-table-common|wangEditor))\.js)],
						%regex[^.+(?:(?<!(?:-|\.)min)\.css)]
						]]>
					</warSourceExcludes>
				</configuration>
			</plugin>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • jdk9新特性

    jdk9新特性jdk目录结构变化JDK=JRE+开发工具集(javac编译工具等)JRE=JVM+JavaSE标准类库jdk8的目录结构:jdk9目录结构:模块化先创建两个modul

    2022年7月4日
  • 关于flask的SSTI注入[通俗易懂]

    关于flask的SSTI注入[通俗易懂]ssti注入又称服务器端模板注入攻击(Server-SideTemplateInjection),和sql注入一样,也是由于接受用户输入而造成的安全问题。它的实质就是服务器端接受了用户的输入,没有经过过滤或者说过滤不严谨,将用户输入作为web应用模板的一部分,但是在进行编译渲染的过程中,执行了用户输入的恶意代码,造成信息泄露,代码执行,getshell等问题。这个问题主要是出在web应…

    2022年8月30日
  • Pycharm—-设置背景颜色和字体的样式「建议收藏」

    Pycharm—-设置背景颜色和字体的样式「建议收藏」编辑器默认显示的样式背景为白色,看着会刺眼,也不方便查找我们写的某些参数等,通过设定,可以对页面的样式进行选择更改,方便直观的在编辑器中查看自己所写的代码,设置前:设置后操作方式:转载于:https://www.cnblogs.com/syw20170419/p/10984023.html…

    2022年8月28日
  • Python-pandas的fillna()方法-填充空值[通俗易懂]

    Python-pandas的fillna()方法-填充空值[通俗易懂]0.摘要pandas中fillna()方法,能够使用指定的方法填充NA/NaN值。1.函数详解函数形式:fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None,**kwargs)参数:value:用于填充的空值的值。method:{‘backfill’,…

    2022年8月12日
  • idea快捷键整理代码_idea中快捷键

    idea快捷键整理代码_idea中快捷键IDEA常用快捷键

    2022年10月12日
  • 编码器的工作原理_编码器的应用

    编码器的工作原理_编码器的应用最近公司项目用到了编码器选用的编码器为360脉冲为了方便其一圈发360个脉冲,当然精度只有一度,如果为了高精度可以选用其他类型的首先简述一下编码器的工作原理编码器可按以下方式来分类。1、按码盘的刻孔方式不同分类(1)增量型:就是每转过单位的角度就发出一个脉冲信号(也有发正余弦信号,编码器(图1)然后对其进行细分,斩波出频率更高的脉冲),通常为A相、B相、Z…

    2022年10月1日

发表回复

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

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