【问题标题】:Copy a single file to multiple directories in Ant将单个文件复制到 Ant 中的多个目录
【发布时间】:2015-09-11 01:42:23
【问题描述】:

我想在构建过程中将一个文件复制到多个目录。

${prop.fmt} 中的值有两个目录,我只想将一个 WAR 文件复制到这两个目录中:

/apps/phxadmin-dev/devd/ui_tomcats/tomcat_c345tczuwdvd2/webapps
/apps/phxadmin-dev/devd/ui_tomcats/tomcat_c404gxduwdvd1/webapps

我的 Ant 脚本:

<target name="test" >
    <dirset id="dir.name" dir="${phx.tomcat.dir}" includes="*/webapps"/>
    <property name="prop.dist.contents" refid="dir.name"/>      
    <loadresource property="prop.fmt">
        <string value="${prop.dist.contents}"/>
        <filterchain>
            <tokenfilter>
                <replaceregex pattern=";" replace="${line.separator}" flags="g"/>
            </tokenfilter>
            <prefixlines prefix="${phx.tomcat.dir}/" />
        </filterchain>
    </loadresource>
    <echo message="${prop.fmt}"/>
    <copy file="${phx.deploy.dir}/${war.file.name}" todir="${prop.fmt}"/>
</target>

有人可以帮我吗?

【问题讨论】:

    标签: file ant


    【解决方案1】:

    &lt;copy&gt; 任务可以通过以下方式复制到多个目标:

    • enableMultipleMappings 属性设置为true
    • 并使用&lt;scriptmapper&gt;

    在您的示例中,整个 &lt;target name="test"&gt; 块可以替换为...

    <target name="test">
        <dirset id="dir.name" dir="${phx.tomcat.dir}" includes="*/webapps"/>
        <copy todir="${phx.tomcat.dir}" enableMultipleMappings="true" verbose="true">
            <fileset file="${phx.deploy.dir}/${war.file.name}"/>
            <scriptmapper language="javascript">
            <![CDATA[
                var dirSet = project.getReference( "dir.name" );
                var ds = dirSet.getDirectoryScanner( project );
                var includes = ds.getIncludedDirectories( );
                for ( var i = 0; i < includes.length; i++ )
                {
                    self.addMappedName( includes[i] + "/" + source );
                }
            ]]>
            </scriptmapper>
        </copy>
    </target>
    

    运行上述脚本会产生类似于以下内容的输出:

    test:
         [copy] Copying 1 file to /apps/phxadmin-dev/devd/ui_tomcats
         [copy] Copying my.war to /apps/phxadmin-dev/devd/ui_tomcats/tomcat_c345tczuwdvd2/webapps/my.war
         [copy] Copying my.war to /apps/phxadmin-dev/devd/ui_tomcats/tomcat_c404gxduwdvd1/webapps/my.war
    

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      相关资源
      最近更新 更多