| buiild.xml & ant | buiild.xml & ant 2007-06-16 - By Erica A Ramsey
hello, it's me again with another problem. I am using tasks provided by oem. One of these tasks is the <ndspackage> task. Inside this task I specify resource files as follows;
<ndspackage> <resource name="image1.png" /> </ndspackage>
Problem is that I have a macrodef that generates resources. I don't know the names of the resource files ahead of time. And they need to specified inside of the <ndspackage>; however, I can't nest anything ant tasks, for example <fileset>, inside of it to include the generated files. I even tried using a macrodef inside of it and that didn't work either.
Is there a way to have "ant" preprocess the "build.xml" and have it expand a symbol, whose value that I define, before invoking the <ndspackage> task? Then I would have the generate resource <macrodef> to create a tmp file and append it with the string "<resource name=\"some_generated_rsc.rsc\"/>". Then I would use the <loadfile> to read in the element tags into an symbol. (I put '<resource name="..." />' and load them into symbol with <loadfile> because I can't specify "< or >" inside of "value=" of <property> task. ) Then I would add the following line to build file;
<ndspackage> @(protected) ${generated_resources} <resource name="image1.png" /> </ndspackage>
"ant" would expand it into
<target name="package" depends="compile"> <ndspackage> <resource name="gen1.rsc" /><resource name="gen2.rsc" /> <resource name="image1.png" /> </ndspackage> </target>
and invoke the <ndspackate> task and it couldn't complain because the data was expanded before it was invoked.
Also, I was thinking about creating selfmodifying build file that would first <copy> itself, using <replaceregex>, looking for the "<-- @(protected) me -->" pattern and substitute it with the <resource name=".."/> tags. It would copy it to an intermediate build file, build.tmp, and then invoke ant on it with the command argument -Dnocopy. This argument would flag the new build file not to copy itself again so I don't go into an infinite loop, of course I could always strip out the self copy tasks as well. I think that this might work but I prefer to use the first method.
Please, If someone knows a better way please help me. Please note that I am trying to use "ant 1.6.1" because that is the environment it must run in.
Thanks! No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.17/850 - Release Date: 6/15/2007 11:31 AM
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@(protected) For additional commands, e-mail: user-help@(protected)
|
|
 |