|
View:
New views
13 Messages
—
Rating Filter:
Alert me
|
|
|
Programmatically create a fileset and referenceHi 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@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceHave 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@... > For additional commands, e-mail: user-help@... > > -- 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@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceNot 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@... >> For additional commands, e-mail: user-help@... >> >> > -- Jeremy Weber Quality Assurance Manager Active Endpoints, Inc. (203)929-9400 jeremy.weber@... http://www.active-endpoints.com "Smart SOA Orchestration Powered by ActiveBPEL" --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceOK 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@... >>> For additional commands, e-mail: user-help@... >>> >>> >> > -- 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@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceSure 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@... >>>> For additional commands, e-mail: user-help@... >>>> >>>> >>> >> > -- Jeremy Weber Quality Assurance Manager Active Endpoints, Inc. (203)929-9400 jeremy.weber@... http://www.active-endpoints.com "Smart SOA Orchestration Powered by ActiveBPEL" --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceI 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@... >>>>> For additional commands, e-mail: user-help@... >>>>> >>>>> >>>> >>> >> > -- 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@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceI 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@... >>>>>> For additional commands, e-mail: user-help@... >>>>>> >>>>>> >>>>> >>>> >>> >> > -- Jeremy Weber Quality Assurance Manager Active Endpoints, Inc. (203)929-9400 jeremy.weber@... http://www.active-endpoints.com "Smart SOA Orchestration Powered by ActiveBPEL" --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceI 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@... >>>>>>> For additional commands, e-mail: user-help@... >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > -- 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@... For additional commands, e-mail: user-help@... |
|
|
Re: Programmatically create a fileset and referenceYeah, 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 |