ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ken Gentle <j.kenneth.gen...@acm.org>
Subject Re: Copy a directory list
Date Sun, 22 Jan 2006 05:50:54 GMT
At 15:57 2006-01-21, you wrote:
> >       Here is the error: the includes attribute should contain patterns
> > matching the file names you want copied.
> > The patterns only match the directories.
> >       Try: includes="**/*.jar""
>
>Tommy,
>
>I know where the error is my real problem is the property friving 
>the selector
>needs to be a comma separated list which describes the configurations to
>deploy. I want to use that value to drive the copy. In other words changing
>the comma separated values to resemble a patternset pattern is not an option.
>So that leaves me with few options. I can define some custom task to do a
>regex replace on the property value appending "/**/*" sequences on each entry
>or I can use beanshell with a script task to  do the same. Neither of those
>options are what I consider appealing. I thought I might be overlooking some
>simple functionality in Ant when I ran into the problem but it just doesn't
>seem to easy to copy directories specified in a CSV list without exposing
>patternset syntax to the creator of the list.

This will load the file and do the replacements:

<project default="default">
   <target name="default">
     <loadfile srcfile="confs-to-deploy.csv" 
property="confs-to-deploy-pattern">
       <filterchain>
         <tokenfilter>
           <linetokenizer/>
           <replaceregex pattern="([^,]+),?"
                         flags="g"
                         replace="\1/** "/>
         </tokenfilter>
       </filterchain>

     </loadfile>
     <echo>${confs-to-deploy-pattern}</echo>
   </target>
</project>

kgentle@ALPHA $ ant -f prop-regex.xml
Buildfile: prop-regex.xml

default:
      [echo] default/** debug/** prod/**

BUILD SUCCESSFUL
Total time: 0 seconds


Or if you already have the property and you're open to AntContrib 
tasks, you can use the PropertyRegex to do the replacements:

<project default="default">
   <taskdef resource="net/sf/antcontrib/antlib.xml">
     <classpath>
       <pathelement 
location="../lib/build/ant-contrib-1.0b2/lib/ant-contrib.jar"/>
     </classpath>
   </taskdef>

   <target name="default">
     <property name="confs-to-deploy" value="default,debug,prod"/>
     <propertyregex property="confs-to-deploy-pattern"
                    input="${confs-to-deploy}"
                    regexp="([^,]+),?"
                    replace="\1/** " />
     <echo>${confs-to-deploy-pattern}</echo>
   </target>
</project>

kgentle@ALPHA $ ant -f prop-regex.xml
Buildfile: prop-regex.xml

default:
      [echo] default/** debug/** prod/**

BUILD SUCCESSFUL
Total time: 0 seconds

>---------------------------------------------------
>Clifton C. Craig, Software Engineer
>Intelligent Computer Systems -  A Division of GBG
>ccc@icsaward.com
>ccraig@gbg.com
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>For additional commands, e-mail: user-help@ant.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message