如何在复制任务中为文件结构扩展apache ant属性

时间:2018-10-31 09:45:36

标签: properties ant expand

为了与ant配合使用,我创建了带有一些常见模板sql脚本的模板目录结构。

我在目录名,文件名和文件中使用了属性名。

例如,模板的根目录为:
   “ $ {application.name}-部署-$ {release.buildid}”
文件名称为:
   “ $ {application.name} _install.sql”
以及sql脚本中使用的属性。

我想通过扩展所有使用的属性来复制此模板目录。

我该怎么做,最好/最快/更少代码的方式是什么?

1 个答案:

答案 0 :(得分:1)

我已经设法通过下面的Ant xml解决了我的问题。

如果有人有更好的方法,请把它置于这种威胁之中。

  <target name="expand_filename">
    <loadresource property="tofile">
      <propertyresource name="file"/>
      <filterchain>
         <expandproperties/>
      </filterchain>
    </loadresource>   
    <move file="${file}" tofile="${tofile}"/>
  </target>
  <target name="start">
    <dirset id="deploy" dir="../Templates/Deploy_template">
      <depth max="0"/>
    </dirset>
    <propertyregex property="template_dir"
                   input="${toString:deploy}"
                   regexp=";"
                   replace=""/>
    <loadresource property="deploy_dir">
      <propertyresource name="template_dir"/>
      <filterchain>
         <expandproperties/>
      </filterchain>
    </loadresource>   
    <copy todir="../${deploy_dir}">
      <fileset dir="../Templates/Deploy_template/${template_dir}"/>
      <filterchain>
         <expandproperties/>
      </filterchain>
    </copy>
    <foreach param="file" inheritall="true" target="expand_filename">
      <path>
        <fileset dir="../${deploy_dir}" includes="*$*{*}*"/> 
      </path>
    </foreach>  
  </target>