场景:
业务相关的js使用seajs基础库,项目打包部署时需要使用seajs的spm命令将业务js逐个进行打包。
为了避免新打包js文件的浏览器缓存,每次打包需要设置一个版本号文件夹,打包时将js文件打到版本号文件夹下。
项目使用maven构建。
因此,在使用maven命令打包执行,需要在配置文件中设置版本号和批量执行spm命令。
附:需要替换版本号seajs打包的bat脚本文件(package-corejs.bat) 和 portable-config-maven-plugin配置(profiles/product.xml)如下。其中portable-config-maven-plugin插件能够在mvn package执行完之后替换war包中指定properties文件的内容。
package-corejs.bat
@echo off
cd %~dp0
cd ..
set tmodDir="src\main\webapp\resources\js"
%需要设置的版本号%
set version=0.0.17
cd %tmodDir%
%改变系统编码方式,否则spm命令执行失败%
chcp 850
%清理需要生成的打包目录%
rd /q /s %version%
%create core folder%
md %version%\core
%copy core to target folder%
xcopy core %version%\core /e /y
%create template folder%
md %version%\template
%copy template to target folder%
xcopy template %version%\template /e /y
%跳转到core目录下%
cd core
%针对js文件,逐个执行打包命令%
for /D %%s in (*) do (
echo package : %%s
spm build -I %%s -O ../../%version% --idleading core/%%s
)
pause
profiles/product.xml文件
<?xml version="1.0" encoding="utf-8" ?> <portable-config> <config-file path="WEB-INF/classes/application.properties"> <!--需要配置的版本号--> <replace key='web.param.resource_version'>0.0.17</replace> </config-file> </portable-config>
解决:
1. 使用maven的antrun插件,在maven生命周期中的process-resources阶段,读取控制台输入的版本号,并替换配置文件中的版本号信息。
2. 使用maven的antrun插件,在maven生命周期中的process-resources阶段,执行package-corejs.bat脚本,完成seajs文件的生成。
maven-antrun-pl