{"id":525,"date":"2009-07-19T15:09:06","date_gmt":"2009-07-19T15:09:06","guid":{"rendered":"https:\/\/virtualchaos.co.uk\/blog\/?p=525"},"modified":"2009-07-19T15:09:06","modified_gmt":"2009-07-19T15:09:06","slug":"combining-minimising-and-distributing-javascripts","status":"publish","type":"post","link":"https:\/\/virtualchaos.co.uk\/blog\/2009\/07\/19\/combining-minimising-and-distributing-javascripts\/","title":{"rendered":"Combining, minimising and distributing JavaScripts"},"content":{"rendered":"<p>\nI&#8217;ve spent some time recently writing ant scripts to generate documentation, combine and minimise multiple javascript files into a single download. I thought I&#8217;d share what I have, in case others find it useful or can suggest better ways of doing what I&#8217;m trying to accomplish.\n<\/p>\n<p>\n<strong>Combining multiple JS files into a single file<\/strong><\/p>\n<p>\nHere&#8217;s a simple ant task that concatenates several files into a single file. The version.txt is a file that simple contains a version number in it i.e. &#8216;0.5&#8217;. <\/p>\n<div class=\"dean_ch\" style=\"white-space: wrap;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;combine&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Concatenating Files&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;concat<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;.\/dist\/uncompressed\/mydistribution-${VERSION}.js&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;file1.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;file2.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;file3.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;file4.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;file5.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/concat<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>\n<strong>Minimising using YUI Compressor<\/strong><\/p>\n<p> You&#8217;ll need to download the latest version of the <a href=\"http:\/\/developer.yahoo.com\/yui\/compressor\/\">YUI Compressor<\/a>. All I&#8217;ve provided is a simple ant wrapper around it, and example of how to use it:<\/p>\n<div class=\"dean_ch\" style=\"white-space: wrap;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;LIB_DIR&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/lib&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;YUI&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${LIB_DIR}\/yui-compressor\/yuicompressor-2.4.2.jar&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;java<\/span> <span class=\"re0\">jar<\/span>=<span class=\"st0\">&quot;${YUI}&quot;<\/span> <span class=\"re0\">fork<\/span>=<span class=\"st0\">&quot;true&quot;<\/span> <span class=\"re0\">failonerror<\/span>=<span class=\"st0\">&quot;true&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">line<\/span>=<span class=\"st0\">&quot;&#8211;type js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">line<\/span>=<span class=\"st0\">&quot;-o ${outputFile}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${inputFile}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/java<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"sc3\"><span class=\"coMULTI\">&lt;!&#8211; using the above &#8211;&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;minimise&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;inputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/dist\/uncompressed\/mydistribution-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;outputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/dist\/minimised\/mydistribution.min-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;\/antcall<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>It&#8217;s worth noting that by default the YUI Compressor both minimises and obfuscates code, this is because the process of obfuscation also significantly reduces the size of the script since it substitutes your nice variable names with single letter variables. If you do not want this behaviour then you can add the &#8216;&#8211;nomunge&#8217; directive as an arg line above .\n<\/p>\n<p><strong>Generating JS Documention<\/strong><\/p>\n<p> For this to work you&#8217;ll need to download the latest version of <a href=\"http:\/\/code.google.com\/p\/jsdoc-toolkit\/\">JSDOC Toolkit<\/a>. In the example below im enumerating each file I want documentation generated for, you could just as easily point it at a directory.<\/p>\n<div class=\"dean_ch\" style=\"white-space: wrap;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;doc&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;generates documentation for core rdfQuery&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"coMULTI\">&lt;!&#8211; jsdoc-toolkit ant taks is currently broken, so we directly run &#8211;&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Generating Documentation:&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;java<\/span> <span class=\"re0\">jar<\/span>=<span class=\"st0\">&quot;${JSDOC_TOOLKIT_DIR}\/jsrun.jar&quot;<\/span> <span class=\"re0\">fork<\/span>=<span class=\"st0\">&quot;true&quot;<\/span> <span class=\"re0\">failonerror<\/span>=<span class=\"st0\">&quot;true&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JSDOC_TOOLKIT_DIR}\/app\/run.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;-t=${JSDOC_TOOLKIT_DIR}\/templates\/jsdoc&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;-d=.\/dist\/documentation\/&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;file1.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;file2.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;file3.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/java<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p><strong>Packaging a distribution<\/strong><\/p>\n<p>Here we want to simply create a single, easily downloadable zip file which contains the combined javascripts, a minimised version of this, and all the api documentation.<\/p>\n<div class=\"dean_ch\" style=\"white-space: wrap;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"> &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;dist&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span> &nbsp; &nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;zip<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;.\/dist\/mydistribution-${VERSION}.zip&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.\/dist\/uncompressed\/&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;*.js&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;.\/dist\/uncompressed\/&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.\/dist\/minimised\/&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;*.js&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;.\/dist\/minimised\/&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.\/dist\/documentation\/&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;**\/**&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;.\/dist\/documentation\/&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/zip<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p><strong>Putting it altogether<\/strong><\/p>\n<p>\nHere&#8217;s a real example of how you can combine the above together. I&#8217;ve copied the <a href=\"http:\/\/code.google.com\/p\/rdfquery\/source\/browse\/trunk\/build.xml\">build.xml that I added to the rdfQuery<\/a> project below.:<\/p>\n<div class=\"dean_ch\" style=\"white-space: wrap;\">\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;?xml<\/span> <span class=\"re0\">version<\/span>=<span class=\"st0\">&quot;1.0&quot;<\/span><span class=\"re2\">?&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;project<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;rdfquery&quot;<\/span> <span class=\"re0\">basedir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">default<\/span>=<span class=\"st0\">&quot;all&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span> &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;loadfile<\/span> <span class=\"re0\">property<\/span>=<span class=\"st0\">&quot;VERSION&quot;<\/span> <span class=\"re0\">srcfile<\/span>=<span class=\"st0\">&quot;version.txt&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;Version to build&quot;<\/span> <span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;filterchain<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;striplinebreaks<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/filterchain<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/loadfile<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;DOCS_DIR&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/docs&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;API documentation&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;DIST_DIR&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/dist&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;LIB_DIR&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;.\/lib&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;JSDOC_TOOLKIT_DIR&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${LIB_DIR}\/jsdoc-toolkit\/&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;YUI&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${LIB_DIR}\/yui-compressor\/yuicompressor-2.4.2.jar&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"coMULTI\">&lt;!&#8211; Names for output &#8211;&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;JS&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${DIST_DIR}\/js\/&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;property<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;JS_MIN&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${DIST_DIR}\/minimised\/&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;all&quot;<\/span> <span class=\"re0\">depends<\/span>=<span class=\"st0\">&quot;init, doc, dist&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;doc&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;generates documentation for core rdfQuery&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"coMULTI\">&lt;!&#8211; jsdoc-toolkit ant taks is currently broken, so we directly run &#8211;&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Generating Documentation:&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;java<\/span> <span class=\"re0\">jar<\/span>=<span class=\"st0\">&quot;${JSDOC_TOOLKIT_DIR}\/jsrun.jar&quot;<\/span> <span class=\"re0\">fork<\/span>=<span class=\"st0\">&quot;true&quot;<\/span> <span class=\"re0\">failonerror<\/span>=<span class=\"st0\">&quot;true&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JSDOC_TOOLKIT_DIR}\/app\/run.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;-t=${JSDOC_TOOLKIT_DIR}\/templates\/jsdoc&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;-d=${DOCS_DIR}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.uri.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.xmlns.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.datatype.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.curie.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.rdf.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.rdfa.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;jquery.rules.js&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/java<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;dist&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;combine&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;minimise&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;zip<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;${DIST_DIR}\/jquery.rdfquery-${VERSION}.zip&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${JS}&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;*.js&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;${JS}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${JS_MIN}&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;*.js&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;${JS_MIN}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;zipfileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DOCS_DIR}&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;**\/**&quot;<\/span> <span class=\"re0\">prefix<\/span>=<span class=\"st0\">&quot;${DOCS_DIR}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp;<span class=\"sc3\"><span class=\"re1\">&lt;\/zip<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;combine&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;combines js files into three different files representing the three different packages for distribution&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Building rdfQuery Core Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;concat<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.core-${VERSION}.js&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.uri.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.xmlns.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.datatype.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.curie.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.rdf.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/concat<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Building rdfQuery RDFa Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;concat<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.rdfa-${VERSION}.js&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${JS}\/&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.rdfquery.core-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.rdfa.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/concat<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Building rdfQuery Rules Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;concat<\/span> <span class=\"re0\">destfile<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.rules-${VERSION}.js&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${JS}\/&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.rdfquery.rdfa-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;fileset<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;.&quot;<\/span> <span class=\"re0\">includes<\/span>=<span class=\"st0\">&quot;jquery.rules.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/concat<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;minimise&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Minimising rdfQuery Core Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Minimising rdfQuery RDFa Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Minimising rdfQuery Rules Distribution&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;inputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.core-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;outputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS_MIN}\/jquery.rdfquery.core.min-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/antcall<span class=\"re2\">&gt;<\/span><\/span><\/span> &nbsp; &nbsp; &nbsp; &nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;inputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.rdfa-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;outputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS_MIN}\/jquery.rdfquery.rdfa.min-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/antcall<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;antcall<\/span> <span class=\"re0\">target<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;inputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS}\/jquery.rdfquery.rules-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;param<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;outputFile&quot;<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${JS_MIN}\/jquery.rdfquery.rules.min-${VERSION}.js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/antcall<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;minimiseJSFile&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;java<\/span> <span class=\"re0\">jar<\/span>=<span class=\"st0\">&quot;${YUI}&quot;<\/span> <span class=\"re0\">fork<\/span>=<span class=\"st0\">&quot;true&quot;<\/span> <span class=\"re0\">failonerror<\/span>=<span class=\"st0\">&quot;true&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">line<\/span>=<span class=\"st0\">&quot;&#8211;type js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">line<\/span>=<span class=\"st0\">&quot;-o ${outputFile}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;arg<\/span> <span class=\"re0\">value<\/span>=<span class=\"st0\">&quot;${inputFile}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/java<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;clean&quot;<\/span> <span class=\"re0\">description<\/span>=<span class=\"st0\">&quot;&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;echo<\/span> <span class=\"re0\">message<\/span>=<span class=\"st0\">&quot;Deleting distribution and API documentation&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;delete<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DIST_DIR}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;delete<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DOCS_DIR}&quot;<\/span><span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;target<\/span> <span class=\"re0\">name<\/span>=<span class=\"st0\">&quot;init&quot;<\/span> <span class=\"re0\">depends<\/span>=<span class=\"st0\">&quot;clean&quot;<\/span><span class=\"re2\">&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;mkdir<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DIST_DIR}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;mkdir<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DIST_DIR}\/js&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;mkdir<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DIST_DIR}\/minimised&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;mkdir<\/span> <span class=\"re0\">dir<\/span>=<span class=\"st0\">&quot;${DOCS_DIR}&quot;<\/span> <span class=\"re2\">\/&gt;<\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">&nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/target<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"sc3\"><span class=\"re1\">&lt;\/project<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>Summary<\/p>\n<p>I hope others find this useful. There are a number of obivious improvements that can be made but I hope it serves to illustrate the general principles. Let me know you all think<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve spent some time recently writing ant scripts to generate documentation, combine and minimise multiple javascript files into a single download. I thought I&#8217;d share what I have, in case others find it useful or can suggest better ways of &hellip; <a href=\"https:\/\/virtualchaos.co.uk\/blog\/2009\/07\/19\/combining-minimising-and-distributing-javascripts\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[367,63,366],"class_list":["post-525","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ant","tag-javascript","tag-rdfquery"],"_links":{"self":[{"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/posts\/525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=525"}],"version-history":[{"count":0,"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/posts\/525\/revisions"}],"wp:attachment":[{"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualchaos.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}