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 16:21:03 GMT
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
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
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