Index: /trunk/build.xml
===================================================================
--- /trunk/build.xml	(revision 8686)
+++ /trunk/build.xml	(revision 8687)
@@ -15,4 +15,5 @@
     <property name="javacc.home" location="tools"/>
     <property name="mapcss.dir" location="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss"/>
+    <property name="groovy.jar" location="tools/groovy-all-2.4.3.jar"/>
     <!-- build parameter: compression level (ant -Dclevel=N)
              N ranges from 0 (no compression) to 9 (maximum compression)
@@ -296,5 +297,5 @@
         </fileset>
         <pathelement path="dist/josm-custom.jar"/>
-        <pathelement path="tools/groovy-all-2.4.3.jar"/>
+        <pathelement path="${groovy.jar}"/>
     </path>
     <macrodef name="init-test-preferences">
@@ -343,5 +344,5 @@
     </macrodef>
     <target name="test-compile" depends="test-init,dist">
-        <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpath="tools/groovy-all-2.4.3.jar"/>
+        <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpath="${groovy.jar}"/>
         <call-groovyc testfamily="unit">
             <cp-elements>
@@ -573,4 +574,31 @@
     </target>
 
+    <macrodef name="_taginfo">
+        <attribute name="type"/>
+        <attribute name="output"/>
+        <sequential>
+            <echo message="Generating Taginfo for type @{type} to @{output}"/>
+            <groovy src="${taginfoextract}" classpath="dist/josm-custom.jar">
+                <arg value="-t"/>
+                <arg value="@{type}"/>
+                <arg value="--noexit"/>
+                <arg value="--svnweb"/>
+                <arg value="--imgurlprefix"/>
+                <arg value="${imgurlprefix}"/>
+                <arg value="-o"/>
+                <arg value="@{output}"/>
+            </groovy>
+        </sequential>
+    </macrodef>
+
+    <target name="taginfo" depends="dist">
+        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpath="${groovy.jar};tools/commons-cli-1.3.1.jar"/>
+        <property name="taginfoextract" value="scripts/taginfoextract.groovy"/>
+        <property name="imgurlprefix" value="http://josm.openstreetmap.de/download/taginfo/taginfo-img"/>
+    	<_taginfo type="mappaint" output="taginfo_style.json"/>
+    	<_taginfo type="presets" output="taginfo_presets.json"/>
+    	<_taginfo type="external_presets" output="taginfo_external_presets.json"/>
+    </target>
+
     <target name="checkstyle">
         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" 
Index: /trunk/scripts/taginfoextract.groovy
===================================================================
--- /trunk/scripts/taginfoextract.groovy	(revision 8686)
+++ /trunk/scripts/taginfoextract.groovy	(revision 8687)
@@ -10,4 +10,12 @@
  */
 import groovy.json.JsonBuilder
+
+import java.awt.image.BufferedImage
+import java.nio.file.FileSystems
+import java.nio.file.Files
+import java.nio.file.Path
+
+import javax.imageio.ImageIO
+
 import org.openstreetmap.josm.Main
 import org.openstreetmap.josm.data.Version
@@ -22,8 +30,8 @@
 import org.openstreetmap.josm.gui.mappaint.Environment
 import org.openstreetmap.josm.gui.mappaint.LineElemStyle
+import org.openstreetmap.josm.gui.mappaint.MultiCascade
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference
-import org.openstreetmap.josm.gui.mappaint.MultiCascade
+import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondition
-import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
@@ -35,10 +43,4 @@
 import org.openstreetmap.josm.io.CachedFile
 import org.openstreetmap.josm.tools.Utils
-
-import javax.imageio.ImageIO
-import java.awt.image.BufferedImage
-import java.nio.file.FileSystems
-import java.nio.file.Files
-import java.nio.file.Path
 
 class taginfoextract {
@@ -191,8 +193,12 @@
         } else {
             System.err.println 'Invalid type ' + options.t
-            System.exit(1)
-        }
-
-        System.exit(0)
+            if (!options.noexit) {
+                System.exit(1)
+            }
+        }
+
+        if (!options.noexit) {
+            System.exit(0)
+        }
     }
 
@@ -208,4 +214,5 @@
         cli._(longOpt:'svnrev', args:1, argName:"revision", "corresponding revision of the repository https://svn.openstreetmap.org/ (optional, current revision is read from the local checkout or from the web if not given, see --svnweb)")
         cli._(longOpt:'imgdir', args:1, argName:"directory", "directory to put the generated images in (default: ./taginfo-img)")
+        cli._(longOpt:'noexit', "don't call System.exit(), for use from Ant script")
         cli._(longOpt:'svnweb', 'fetch revision of the repository https://svn.openstreetmap.org/ from web and not from the local repository')
         cli._(longOpt:'imgurlprefix', args:1, argName:'prefix', 'image URLs prefix for generated image files')
