在maven构建阶段更新jsp脚本标记
我想更新src / main / webapp / jsp下的jsp文件中所有脚本标签内的内容。 如何在maven构建阶段执行此操作?
我正在使用java + spring + maven堆栈。
好的,这是我想要实现的例子:
源代码:
在maven构建之后,它应该存在于目标文件夹中
<script type="text/javascript" src="js/core/validator.js?version=''"> <script type="text/javascript" src="js/app/util/core-util.js?version=''">
请注意src =“”末尾的version参数。
更新:最后,我能够按照以下方式开展工作。 如果有的话,请随意提出替代方案。
-
准备好shell脚本来生成类似这样的属性文件
JS /核心/ validator.js = JS /核心/ validator.js?版本\ = MD5SUM-JS的-/核心/ validator.js
JS /应用/ util的/芯util.js中= JS /应用程序/ util的/芯util.js中?版本\ = MD5SUM-JS的-/应用/ util的/芯util.js中 -
配置maven-replacer-plugin以将此属性文件用作标记值映射并过滤target / app / jsp文件夹下的所有jsp文件。
你没有告诉你需要什么样的替代品,但……
对于很多情况,你可以使用常规的maven资源插件并打开过滤。 这样它将用maven运行时属性替换任何${values}
。
有关插件的文档
对于.jsps,您可能已经在使用war插件。 使用war插件就像是
org.apache.maven.plugins maven-war-plugin 2.2 true WEB-INF src/main/resources/WEB-INF *.jsp
然后你在JSP中有这样的东西:
在maven pom中:
testpath
取决于您的项目配置。 (例如,经常使用src / main / webapp)
编辑:您已在评论中添加了一个计算md5的shell脚本,并且您想要使用它。 我不知道这样做的优雅方式,所以建议一种不那么优雅的方式:使用groovy插件来执行脚本并获取属性的值。
org.codehaus.gmaven gmaven-plugin 1.5 validate execute 2.0 def command = project.properties.script def process = command.execute() process.waitFor() def result = process.in.text.trim() project.properties.md5Value = result def command = project.properties.script def process = command.execute() process.waitFor() def resultfile = new File(project.properties.result_file) project.properties.md5Value = resultfile.getText()
如果您唯一想要的是为您的?version=xxx
添加校验和并且它不需要是您的自定义shell脚本的结果,您可以将maven-antrun-plugin
及其checksum
目标与资源过滤结合使用。
JSP片段:
Antrun插件片段:
org.apache.maven.plugins maven-antrun-plugin validate run true
最后是资源插件片段:
org.apache.maven.plugins maven-resources-plugin copy-resources generate-sources ${project.basedir}/war/WEB-INF/jsp/template ${project.basedir}/war/WEB-INF/jsp *.jsp true
antrun
插件的checksum
目标应该计算校验和并将其公开在${md5.awesomeScript}
属性中。
resources
插件将在稍后阶段进行,并将所有.jsp
文件从WEB-INF/jsp/template
文件夹复制到/jsp
根目录,过滤maven属性。
因此,您应该得到一个jsp文件,其中?version=${md5.awesomeScript}
使用以前生成的校验和进行增强。
我包含的片段就是片段。 您可能需要提供一些进一步的配置才能使代码正常工作。
如果您需要在自定义shell脚本中计算MD5
,我建议扩展脚本,以便它为您执行find-replace-copy并使用maven exec
插件来运行它。
希望这有所帮助! 🙂
我可以问你最后怎么做的吗? 如果没有“?version =””就可以这样做
source: after build: