ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rebhan, Gilbert" <Gilbert.Reb...@huk-coburg.de>
Subject RE: appending to fileset
Date Tue, 10 Jun 2008 10:50:54 GMT
 

-----Original Message-----
From: Shawn Castrianni [mailto:Shawn.Castrianni@halliburton.com] 
Sent: Monday, June 09, 2008 6:23 AM
To: 'Ant Users List'
Subject: appending to fileset

/*
Is there a way to incrementally add files to a fileset?  I am building a
fileset by looping through an XML file and need to add files to a named
fileset one by one if they meet certain criteria.  Is this possible
without converting everything into paths or strings or stuff like that?
*/

quick shot, untested, seems a bit long winded
maybe there's a better/shorter solution ?!

don't know your xml, so i took an example structure =
...
<file>
<file.1>
<name>...</name>
</file.1>
<file.2>
<name>...</name>
</file.2>
...

<!-- Import AntContrib -->
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<!-- Import XMLTask -->
<taskdef name="xmltask"
classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>

<target name="...">

<patternset id="basic_files" includes="*.txt **/*.properties"/>
    
   <fileset dir="Y:/test" id="namedfileset">
    <patternset refid="basic_files"/>
   </fileset>

  <var name="filelist" value=""/>

  <xmltask source="your.xml">
    <call path="//file/*">
      <param path="name/text()" name="fname" />
      <actions>
        <if>
          <your condition(s) goes here ... />
            <then>
            <var name="filelist_tmp" value="${filelist}"/>
            <var name="filelist" unset="true"/>
            <var name="filelist" value="${filelist_tmp} @{fname}"/>
            </then>
        </if>
      </actions>
    </call>
  </xmltask>    

<patternset id="ext_files" includes="${filelist}"/>

<fileset dir="Y:/test" id="ext_namedfileset">
  <patternset refid="ext_files"/>
  <patternset refid="basic_files"/>
</fileset>
  
</target>


notes =
when using patternset you are more flexible
with the appropriate xpath expression and your condition(s) between
<actions>  <if> ... </if> ...</actions> you take control what is matched
and
whether the matched gets included in the space separated patternset
(don't know whether the blank at the end of ${filelist} is a problem !?)
Beside that you can put other tasks into the <actions .../> scope if
needed

then later construct a fileset with the same dir as your first fileset
and include
both patternsets via refid= ... and finally you have your extended
fileset.

you need =
[1] http://www.oopsconsultancy.com/software/xmltask/
[2] http://ant-contrib.sourceforge.net/


Regards, Gilbert

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


Mime
View raw message