ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scot P. Floess" <flo...@mindspring.com>
Subject Re: Programmatically create a fileset and reference
Date Fri, 02 May 2008 16:01:32 GMT
I just (really quickly) looked at the link.  That's pretty darn cool.  I 
hadn't heard of that project :)

So, are you unpacking the jar file first?

I thought Ant dealt with the Windows file system (and spaces) 
correctly?  I don't run Windows at all so this is all an assumption on 
my part ;)

Jeremy Weber wrote:
> I guess I could try convert the value of the property, but I'd rather 
> not.
> Yes, all build artifacts are actually in a jar file.  Its basically, a 
> customized version of http://antinstaller.sourceforge.net/.
> I am still thinking that creating my own custom task would be helpful, 
> just cant figure out how to added a fileset to the project class.
>
> Scot P. Floess wrote:
>> I see...
>>
>> Have you considered using escape characters where the spaces are in 
>> the property?
>>
>> So, curious, you are using build.xml's in a jar file?
>>
>> Or, do you extract from the jar file and then use those files?
>>
>> Jeremy Weber wrote:
>>> 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
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim

Architect Keros          http://sourceforge.net/projects/keros


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


Mime
View raw message