I tuned the example...
<!-- Define a new 'task' for easier use --> <macrodef name="jsmin"> <!-- Where to find the development version of JavaScript files --> <attribute name="srcDir"/> <!-- Where to store the 'compressed' files --> <attribute name="destDir"/> <sequential> <!-- Iterate over the JS-files and dont pass the filename as argument --> <apply executable="jsmin" addsourcefile="false"> <!-- Collect the JS-files --> <fileset dir="@{srcDir}" includes="*.js"/> <redirector> <!-- redirect STDIN; fileset collects relative to its dir, but we need relative to basedir --> <inputmapper type="glob" from="*" to="@{srcDir}/*"/> <!-- redirect STDOUT to file in dest-dir --> <outputmapper id="out" type="glob" from="*.js" to="@{destDir}/*.js"/> </redirector> </apply> </sequential> </macrodef> <target name="jsmin2"> <!-- compress the JavaScript files --> <jsmin srcDir="src" destDir="dest"/> <!-- print the compressed files out - for check only --> <concat><fileset dir="dest"/></concat> </target> >-----Ursprüngliche Nachricht----- >Von: Jakob Fix [mailto:[EMAIL PROTECTED] > > >> <mapper id="out" type="glob" >> from="*.js" >> to="dest/*.js"/> > >"Map" (whatever this means exactly) each file ending in .js to >dest/*.js. This will be used later on. Mapping means applying a rule for converting a amount of names to other names. You could think about using a s#(.*)\.js#\dest\1.js# but you got the meaning. >> <apply executable="jsmin"> >> <fileset dir="src" includes="*.js"/> > >Create a fileset of all files in the src/ directory ending in >.js. I guess this is represented internally as a list of >absolute pathnames of all files ending .js in the src/ >directory. The apply task will then cycle through this list, >file by file. Nope - not the fileset itself gives you absolute filenames. The DirectoryScanner used internally does that. Have a look at the Tutorial "Tasks using Properties, Filesets & Paths" in the manual for more about using filesets in tasks. http://ant.apache.org/manual/tutorial-tasks-filesets-properties.html#filesets >> <mapper refid="out"/> > > At least, I found you can put this element anywhere inside >the apply task. Another thing, I commented this line out, and >the results are the same. Bizarre?! Havent looked at that. But maybe <apply> ignores nested <mappers> silently - maybe only if a <redirector> is present. Main point here is the definition with "id" and reusing it via "refid". >And it works! Wow, that's what I call black magic. Black magic is ok ... for the first (few) steps. But we want to give more knowledge to convert that into "white magic" ;-) >Although, there's still one minor hiccup; the input filename >is passed to jsmin as an argument, but where? I know this >because it re-appears at the beginning of the out output file >as a comment, which is what jsmin does with additional >arguments. (This is why I tried to uncomment the <mapper >refid="out"/> line, but to no effect.) Standard behaviour of <apply>, but can be switched off - as done in the new code. >Thanks a lot. Now, how can I contribute some documentation for this? For what exactly? Contributions are welcome as patches in bugzilla. Jan --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]