2015-09-10 139 views
0

我想在構建過程中將一個文件複製到多個目錄。將單個文件複製到Ant中的多個目錄

${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> 

請某人能幫助我嗎?

回答

1

<copy>任務可以通過複製到多個目的地:

  • 設置enableMultipleMappings屬性true
  • 和使用<scriptmapper>

在你的榜樣,整個<target name="test">塊可更換與...

<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 
相關問題