Index: plugins/00_plugin_dir_template/build.xml
===================================================================
--- plugins/00_plugin_dir_template/build.xml	(revision 28988)
+++ plugins/00_plugin_dir_template/build.xml	(working copy)
@@ -34,54 +34,19 @@
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
     <property name="plugin.main.version" value="4394"/>
 
-    <!--
-    **********************************************************
-    ** include targets that all plugins have in common
-    **********************************************************
+    <!-- Configure these properties (replace "..." accordingly).
+         See http://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
     -->
+    <property name="plugin.author" value="..."/>
+    <property name="plugin.class" value="..."/>
+    <property name="plugin.description" value="..."/>
+    <property name="plugin.icon" value="..."/>
+    <property name="plugin.link" value="..."/>
+    <!--<property name="plugin.early" value="..."/>-->
+    <!--<property name="plugin.requires" value="..."/>-->
+    <!--<property name="plugin.stage" value="..."/>-->
+
+    <!-- ** include targets that all plugins have in common ** -->
     <import file="../build-common.xml"/>
   
-    <!--
-    **********************************************************
-    ** dist - creates the plugin jar
-    **********************************************************
-    -->
-    <target name="dist" depends="compile,revision">
-        <echo message="creating ${ant.project.name}.jar ... "/>
-        <copy todir="${plugin.build.dir}/resources">
-            <fileset dir="resources"/>
-        </copy>
-        <copy todir="${plugin.build.dir}/images">
-            <fileset dir="images"/>
-        </copy>
-        <copy todir="${plugin.build.dir}/data">
-            <fileset dir="data"/>
-        </copy>
-        <copy todir="${plugin.build.dir}">
-            <fileset dir=".">
-                <include name="README"/>
-                <include name="LICENSE"/>
-            </fileset>
-        </copy>
-        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
-            <!--
-            ************************************************
-            ** configure these properties. Most of them will be copied to the plugins
-            ** manifest file. Property values will also show up in the list available
-            ** plugins: http://josm.openstreetmap.de/wiki/Plugins.
-            **
-            ************************************************
-            -->
-            <manifest>
-                <attribute name="Author" value="..."/>
-                <attribute name="Plugin-Class" value="..."/>
-                <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
-                <attribute name="Plugin-Description" value="..."/>
-                <attribute name="Plugin-Icon" value="..."/>
-                <attribute name="Plugin-Link" value="..."/>
-                <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
-                <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
-            </manifest>
-        </jar>
-    </target>
 </project>
Index: plugins/build-common.xml
===================================================================
--- plugins/build-common.xml	(revision 28988)
+++ plugins/build-common.xml	(working copy)
@@ -37,13 +37,98 @@
     -->
     <target name="compile" depends="init">
         <echo message="compiling sources for ${plugin.jar} ..."/>
-        <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}" includeantruntime="false">
+        <javac srcdir="src" debug="true" destdir="${plugin.build.dir}" includeantruntime="false">
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:unchecked"/>
+            <classpath>
+                <pathelement location="${josm}"/>
+                <fileset dir="${plugin.lib.dir}" erroronmissingdir="no">
+                    <include name="**/*.jar"/>
+                </fileset>
+            </classpath>
         </javac>
     </target>
     <!--
     **********************************************************
+    ** dist - creates the plugin jar
+    **********************************************************
+    -->
+    <target name="dist" depends="compile,revision">
+        <echo message="creating ${ant.project.name}.jar ... "/>
+        <copy todir="${plugin.build.dir}/resources" failonerror="no" includeemptydirs="no">
+            <fileset dir="resources"/>
+        </copy>
+        <copy todir="${plugin.build.dir}/images" failonerror="no" includeemptydirs="no">
+            <fileset dir="images"/>
+        </copy>
+        <copy todir="${plugin.build.dir}/data" failonerror="no" includeemptydirs="no">
+            <fileset dir="data"/>
+        </copy>
+        <copy todir="${plugin.build.dir}">
+            <fileset dir=".">
+                <include name="README"/>
+                <include name="LICENSE"/>
+            </fileset>
+        </copy>
+        <delete file="MANIFEST" failonerror="no"/>
+        <manifest file="MANIFEST" mode="update">
+            <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
+            <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
+            <attribute name="Plugin-Class" value="${plugin.class}" />
+            <attribute name="Plugin-Description" value="${plugin.description}" />
+            <attribute name="Plugin-Date" value="${version.entry.commit.date}" />
+            <attribute name="Author" value="${plugin.author}"/>
+        </manifest>
+        <antcall target="add-manifest-attribute">
+            <param name="manifest.attribute" value="Plugin-Link"/>
+            <param name="propery.name" value="plugin.link"/>
+            <param name="propery.value" value="${plugin.link}"/>
+        </antcall>
+        <antcall target="add-manifest-attribute">
+            <param name="manifest.attribute" value="Plugin-Icon"/>
+            <param name="propery.name" value="plugin.icon"/>
+            <param name="propery.value" value="${plugin.icon}"/>
+        </antcall>
+        <antcall target="add-manifest-attribute">
+            <param name="manifest.attribute" value="Plugin-Early"/>
+            <param name="propery.name" value="plugin.early"/>
+            <param name="propery.value" value="${plugin.early}"/>
+        </antcall>
+        <antcall target="add-manifest-attribute">
+            <param name="manifest.attribute" value="Plugin-Requires"/>
+            <param name="propery.name" value="plugin.requires"/>
+            <param name="propery.value" value="${plugin.requires}"/>
+        </antcall>
+        <antcall target="add-manifest-attribute">
+            <param name="manifest.attribute" value="Plugin-Stage"/>
+            <param name="propery.name" value="plugin.stage"/>
+            <param name="propery.value" value="${plugin.stage}"/>
+        </antcall>
+        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}" manifest="MANIFEST">
+            <zipgroupfileset dir="${plugin.lib.dir}" includes="*.jar" erroronmissingdir="no"/>
+        </jar>
+        <delete file="MANIFEST" failonerror="no"/>
+    </target>
+    <target name="add-manifest-attribute" depends="check-manifest-attribute" if="have-${propery.name}">
+        <manifest file="MANIFEST" mode="update">
+            <attribute name="${manifest.attribute}" value="${propery.value}" />
+        </manifest>
+    </target>
+    <target name="check-manifest-attribute">
+        <condition property="have-${propery.name}">
+            <and>
+                <isset property="${propery.name}"/>
+                <not>
+                    <equals arg1="${propery.value}" arg2=""/>
+                </not>
+                <not>
+                    <equals arg1="${propery.value}" arg2="..."/>
+                </not>
+            </and>
+        </condition>
+    </target>
+    <!--
+    **********************************************************
     ** revision - extracts the current revision number for the
     **    file build.number and stores it in the XML property
     **    version.*
Index: i18n/convplugins.pl
===================================================================
--- i18n/convplugins.pl	(revision 28988)
+++ i18n/convplugins.pl	(working copy)
@@ -21,7 +21,7 @@
     while(my $line = <FILE>)
     {
       chomp($line);
-      if($line =~ /name=\"Plugin-Description\" +value=\"(.*)\"/)
+      if($line =~ /name=\"[Pp]lugin.[Dd]escription\" +value=\"(.*)\"/)
       {
         $printed = 1;
         print "/* Plugin $plugin */\ntr(\"$1\");\n" if($plugin ne "myPluginName");
