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


相关推荐

  • Docker(三) 通过gitlab部署CICD「建议收藏」

    Docker(三) 通过gitlab部署CICD「建议收藏」文章目录Docker(三)docker通过gitlab部署CICD一、部署gitlab1.1拉取gitlab镜像1.2运行gitlab镜像1.3配置1.4若发生502报错二、CI2.1Runner搭建2.2注册Runner2.3样例测试2.3.1新建maven-tomcat项目2.3.2创建.gitlab-ci.yml2.3.3编写Dockerfile文件2.3.4编写docker-compose.yml文件三、CD3.1安装Jenkins3.2配置目标服务器及Gitla

    2022年5月2日
    130
  • 禁止计算机更新,彻底禁止win10自动更新方法

    禁止计算机更新,彻底禁止win10自动更新方法现在基本每个小伙伴都用上Windows10的电脑,Windows10每隔一段时间会进行更新补丁,这个时候显得格外烦恼,很多用户都想要关掉,借助一些小工具来实现,但往往会发现,自动更新就像打不死的小强,不管怎么关闭,之后还是会自动更新,让用户非常不爽,win10关闭自动更新已经成为众多用户的难题,所以很多用户来问我怎么才可以把win10永久关闭自动更新,接下来,我就给大家介绍彻底禁止win10自动更…

    2022年5月4日
    82
  • 浅聊:ES6模板字符串与一般字符串

    浅聊:ES6模板字符串与一般字符串一.模板字符串与一般字符串区别二.模板字符串的一些注意事项一.模板字符串与一般字符串区别1,认识模板字符串:’xiaozhang’ //一般字符串`xiaozhang` //模板字符串(用两个反引号裹着)constusername1=’xiaozhang’;constusername2=`xiaozhang`;console.log(username1,username2,usern..

    2022年8月21日
    17
  • Linux服务器部署vue项目[通俗易懂]

    Linux服务器部署vue项目[通俗易懂]最近刚到新公司,正好之前没接触过这方面的东西。最初仅仅是猜想。最后也没想到Tomcat真的可以部署前端页面好,我先来。新建一个vue项目。//详细的怎么创建。我这里就不说了。vueinitwebpackvuetest得到的项目目录执行,npmrunbuild//进行打包操作当最后看到这样代表打包成功此时你可连接服务器。我这里用…

    2022年6月18日
    54
  • 用Python做个微信自动回复机器人

    用Python做个微信自动回复机器人微信已经成为我们生活不可或缺的一部分,每天有380亿条消息从微信上发出,其中6亿条是语音消息,有350万个活跃的公众账号,并存在着8亿活跃粉丝。微信是一个庞大的生态群体。今天我们来玩转一下微信,微信有关的第三方框架很多,比如wxpy,wxBot等。今天要使用的是其中著名的itchatPython模块来做两件有趣的事情。 一个自动回复的机器人微信自上线以来,一直没有自动回复的功能…

    2022年10月1日
    3
  • idea 2022.01.4 mac激活码(JetBrains全家桶)2022.02.23

    (idea 2022.01.4 mac激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlHCIQ56F36O-eyJsaWN…

    2022年4月1日
    186

发表回复

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

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