ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Weber <jeremy.we...@activevos.com>
Subject Re: Programmatically create a fileset and reference
Date Fri, 02 May 2008 14:43:04 GMT
Sure does, filelist accepts a set of files delimited by a space...  So 
when a path has a space it doesnt behave.  Have used ant-contrib plenty 
of times in the past, buts that not an option.  The kicker is this isnt 
a normal ant environment, but actually all the build files, etc are in a 
jar when they are executed.  Although I havent tried ant-contrib, this 
environment causes problems with similiar tasks ant-call, ant, etc.

Scot P. Floess wrote:
> OK I think I see the problem.  It breaks down due to the space?
>
> Have you looked at Ant Contrib?
>
> They have a <for> task that may help you.  It uses delimiters - in 
> this case you can define the delimiter as a comma.  You might also 
> want to define in a macrodef (sorry I am a huge huge fan of macrodefs)...
>
> <macrodef name="copy-files" description = "Will copy files contained 
> in @{property} to dir @{to-dir} storing all the files in ref id @{id}">
>    <attribute name="property"  description="Property that contains all 
> files to copy"/>
>    <attribute name="id" description="Path id reference once files 
> copied"/>
>    <attribute name="to-dir" description="Directory to copy files"/>
>    <attribute name="delim" default="," description = "Delimiter used 
> in @{property}"/>
>
>    <sequence>
>       <mkdir dir="@{to-dir}"/>
>
>       <for list="${@{property}}" param="toCopy" delimiter="@{delim}">
>          <sequential>
>             <copy file = "@{toCopy}"  toDir="@{to-dir}"/>
>          </sequential>
>       </for>
>
>       <path id="@{id}">
>          <fileset dir="@{to-dir}"/>
>       </path>
>    </sequence>
> </macrodef>
>
> Keep in mind, I just whipped this out ;)
>
> To use:
>
> <property name="jdbc.jar" value="C:\Documents and 
> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and 
> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>
> <copy-files property="jdbc.jar" id = "copied.files" to-dir = 
> "new-directory"/>
>
> Note that property attribute simply lists the property name...not 
> using the dollar notation as that is taken care of in the <for> task 
> via ${@{property}}
>
> HTH,
>
> Flossy
>
>
> Jeremy Weber wrote:
>> Not sure that accomplishes what I need to do.  The problem I wish to 
>> solve is this:
>>
>> I have a property that equates to this:
>>
>> <property name="jdbc.jar" value="C:\Documents and 
>> Settings\jweber\Desktop\db2_test\db2jcc.jar,C:\Documents and 
>> Settings\jweber\Desktop\db2_test\db2jcc_license_cu.jar"/>
>>
>> The value of this property is variable.
>>
>> I then have a couple of tasks that perform the following:
>>
>>     <!-- use filelist to copy the files to a temp dir so we can build 
>> a fileset -->
>>      <copy toDir=".tmp_cp" overwrite="true"  failonerror="false">
>>         <filelist files="${jdbc.jar}" />
>>         <flattenmapper/>
>>      </copy>
>>
>>    <!-- create a referencable path object to be used in sql task -->
>>      <path id="sql.cp">
>>         <fileset dir=".tmp_cp"/>
>>      </path>*
>> *
>> This all works great (although not so straight forward), until there 
>> is a space in one of the paths in jdbc.jar property.  If you have 
>> another approach I'd be willing to try but I dont think your suggest 
>> will work for this.
>> *
>>
>>
>> *
>>
>> Scot P. Floess wrote:
>>> Have you considered using a macrodef and elements?
>>>
>>> Maybe something like:
>>>
>>> <macrodef name="my-macro">
>>>   <attribute name="id"/>
>>>    <element name="includes"/>
>>>      <sequential>
>>>       <path id="@{id}">
>>>          <includes/>
>>>       </path>
>>>    </sequential>
>>> </macrodef>
>>>
>>> Then you can supply whatever you want in <includes> as long as it 
>>> adheres to <path> allowances....
>>>
>>> Jeremy Weber wrote:
>>>> Hi All,
>>>>
>>>> I have created dozen of custom tasks before, but find myself 
>>>> struggling with this one. I wish to create a task that does the 
>>>> following:
>>>>
>>>> 1.  Accepts a file attribute to represent the absolute path of a 
>>>> file contains comma separated absolute paths.
>>>>    a.  this file name will be read in, parsed and each file found 
>>>> will be added to a fileset object, which in term is added to a 
>>>> resources object.
>>>> 2.  Accepts a id property
>>>>    a.  this id will be the id of the resource created in step 1a.
>>>>
>>>> So essentially I want...
>>>>
>>>>    <csvtofileset file="csv.file.name" id="some.id.name">
>>>>
>>>> I am unclear on how to add the fileset i create in my code to the 
>>>> project.  Additionally I am unsure of how to assign this an 'id' 
>>>> that I can reference elsewhere.  Basically what I want to be able 
>>>> to do is create a collection of files on the fly which I can 
>>>> reference on the fly.   Essentially in the following snippet, the 
>>>> resources element would be replaced by my new task element
>>>>
>>>> <project name="test" basedir="." default="test">
>>>>
>>>>   <!-- old -->
>>>>    <resources id="fsd">
>>>>         <fileset file="c:\temp\db2_test\db2jcc.jar" />           
>>>> <fileset file="c:\temp\db2_test\db2jcc_license_cu.jar" />       
>>>> </resources>
>>>>    <!-- old -->
>>>>
>>>>    <!-- new -->
>>>>           <csvtofileset file="csv.file.name" id="fsd">
>>>>    <!-- new -->
>>>>
>>>>   <target name="test">
>>>>          <copy toDir="c:\temp\ failonerror="true">
>>>>             <resources refid="fsd"/>
>>>>          </copy>
>>>>   </target>
>>>> </project>
>>>>
>>>>
>>>> Any help at all would be appreciated.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>>>> For additional commands, e-mail: user-help@ant.apache.org
>>>>
>>>>
>>>
>>
>

-- 
Jeremy Weber
Quality Assurance Manager
Active Endpoints, Inc.
(203)929-9400
jeremy.weber@activevos.com 
http://www.active-endpoints.com
"Smart SOA Orchestration Powered by ActiveBPEL"


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


Mime
View raw message