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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习之RNN循环神经网络(理论+图解+Python代码部分)[通俗易懂]

    深度学习之RNN循环神经网络(理论+图解+Python代码部分)[通俗易懂]目录前言一、普通神经网络二、循环神经网络1.前向传播2.反向传播算法BPTT3.自然语言处理之RNN 4.梯度问题4.1梯度爆炸4.2梯度消失:5.Keras建立RNN模型进行IMDb情感分析的Python代码前言前段时间实验室人手一本《DeepLearning》,本文章结合这本圣经和博客上各类知识以及我自己的理解和实践,针对RNN循环神经网络作出…

    2022年10月21日
    0
  • 手机号码归属地查询数据库下载「建议收藏」

    手机号码归属地查询数据库下载「建议收藏」只需要输入前7位即可查询所在地access数据库,excel的可以直接查询哦,还有htm格式下载。有15万5千多条记录电话区号code字段2009年01月02日整理完成支持移动159号段和联通153号段包含最新的151、155、157号码段的归属地数据手机号码归属地信息,可以详细查询到手机号码的开户地信息,包括该号码所属省份、城市、长途区号以及该号…

    2022年7月22日
    12
  • pycharm怎么添加项目_pycharm 其他

    pycharm怎么添加项目_pycharm 其他pycharm项目添加,在使用pycharm的过程中,有时想要在项目列表中展示多个项目需求第一种情况:原有项目的同级别目录展示另一个项目,如下面的截图操作路径:文件–打开–选择要添加的项目–点附加第二种情况:在原来的项目的主目录下添加拧一个项目,如下面的截图操作路径:文件–设置–项目–项目结构–添加内容根注意:以上两种添加方式:项目的根目录都是第一个项目创建时的根目录,查勘方式,点终端就会显示路径,这个路径也项目的…

    2022年8月25日
    7
  • 0x00000000该内存不能为read

    0x00000000该内存不能为read

    2021年12月31日
    62
  • maven项目使用mybatis插件Free Mybatis plugin「建议收藏」

    maven项目使用mybatis插件Free Mybatis plugin「建议收藏」首先安装插件如图所示选择第一个插件安装,安装完毕重启IDEA 然后我们选择我们已经配置好的数据库如下图在需要生成配置文件的数据库上右键,就会出现mybatis-generator选项打开这个就打开如上图所示配置窗口,这里我们使用默认的就行,如果不想使用lombok去掉这个勾选即可,然后我们选择ok即可就会生成以上文件,一个数据库的映射类,一个操作数据库的映射接口,和具体操作数据库的xml,主配置文件就在Configure里面这个自己生成…

    2022年9月28日
    0
  • Tensorflow2实现像素归一化与频谱归一化[通俗易懂]

    Tensorflow2实现像素归一化与频谱归一化[通俗易懂]归一化技术的改进是生成对抗网络(GenerativeAdversarialNetworks,GAN)中众多改进的一种,本文介绍常用于当前GAN中的像素归一化(Pixelnormalization,或称为像素规范化)和频谱归一化(Spectralnormalization,或称频谱规范化),在高清图片生成中,这两种归一化技术得到了广泛使用,最后使用Tensorflow2实现像素归一化和频谱归一化。

    2022年8月31日
    2

发表回复

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

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