在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参数。

更新:最后,我能够按照以下方式开展工作。 如果有的话,请随意提出替代方案。

  1. 准备好shell脚本来生成类似这样的属性文件

    JS /核心/ validator.js = JS /核心/ validator.js?版本\ = MD5SUM-JS的-/核心/ validator.js
    JS /应用/ util的/芯util.js中= JS /应用程序/ util的/芯util.js中?版本\ = MD5SUM-JS的-/应用/ util的/芯util.js中

  2. 配置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: