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:25:14 GMT
Interesting...

Well if you wouldn't mind...keep me up-to-date on what you discover...

Thanks!

Flossy

Jeremy Weber wrote:
> Yeah, I have tweaked it a bit to support some stuff it didnt out of 
> the box, it seems to work okay.  Everything stays in the jar file but 
> its executable.
>
> I think they real problem is filelist, and that it delimits by 
> spaces.  Probably a bug there.  I am going to see if I can patch the 
> filelist class to accept a delimiter.
>
> Scot P. Floess wrote:
>> 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