Ticket #8222: plugin_build_v2.patch

File plugin_build_v2.patch, 8.0 KB (added by simon04, 11 years ago)
  • 00_plugin_dir_template/build.xml

     
    3535    <property name="plugin.main.version" value="4394"/>
    3636
    3737    <!--
    38     **********************************************************
    39     ** include targets that all plugins have in common
    40     **********************************************************
     38        ************************************************
     39        ** configure these properties. Most of them will be copied to the plugins
     40        ** manifest file. Property values will also show up in the list available
     41        ** plugins: http://josm.openstreetmap.de/wiki/Plugins.
     42        **
     43        ************************************************
    4144    -->
     45    <property name="plugin.author" value="..."/>
     46    <property name="plugin.class" value="..."/>
     47    <property name="plugin.description" value="..."/>
     48    <property name="plugin.icon" value="..."/>
     49    <property name="plugin.link" value="..."/>
     50    <property name="plugin.early" value="..."/>
     51    <property name="plugin.requires" value="..."/>
     52    <property name="plugin.stage" value="..."/>
     53
     54    <!-- ** include targets that all plugins have in common ** -->
    4255    <import file="../build-common.xml"/>
    4356 
    44     <!--
    45     **********************************************************
    46     ** dist - creates the plugin jar
    47     **********************************************************
    48     -->
    49     <target name="dist" depends="compile,revision">
    50         <echo message="creating ${ant.project.name}.jar ... "/>
    51         <copy todir="${plugin.build.dir}/resources">
    52             <fileset dir="resources"/>
    53         </copy>
    54         <copy todir="${plugin.build.dir}/images">
    55             <fileset dir="images"/>
    56         </copy>
    57         <copy todir="${plugin.build.dir}/data">
    58             <fileset dir="data"/>
    59         </copy>
    60         <copy todir="${plugin.build.dir}">
    61             <fileset dir=".">
    62                 <include name="README"/>
    63                 <include name="LICENSE"/>
    64             </fileset>
    65         </copy>
    66         <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
    67             <!--
    68             ************************************************
    69             ** configure these properties. Most of them will be copied to the plugins
    70             ** manifest file. Property values will also show up in the list available
    71             ** plugins: http://josm.openstreetmap.de/wiki/Plugins.
    72             **
    73             ************************************************
    74             -->
    75             <manifest>
    76                 <attribute name="Author" value="..."/>
    77                 <attribute name="Plugin-Class" value="..."/>
    78                 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
    79                 <attribute name="Plugin-Description" value="..."/>
    80                 <attribute name="Plugin-Icon" value="..."/>
    81                 <attribute name="Plugin-Link" value="..."/>
    82                 <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
    83                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
    84             </manifest>
    85         </jar>
    86     </target>
    8757</project>
  • build-common.xml

     
    3737    -->
    3838    <target name="compile" depends="init">
    3939        <echo message="compiling sources for ${plugin.jar} ..."/>
    40         <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}" includeantruntime="false">
     40        <javac srcdir="src" debug="true" destdir="${plugin.build.dir}" includeantruntime="false">
    4141            <compilerarg value="-Xlint:deprecation"/>
    4242            <compilerarg value="-Xlint:unchecked"/>
     43            <classpath>
     44                <pathelement location="${josm}"/>
     45                <fileset dir="${plugin.lib.dir}">
     46                    <include name="**/*.jar"/>
     47                </fileset>
     48            </classpath>
    4349        </javac>
    4450    </target>
    4551    <!--
    4652    **********************************************************
     53    ** dist - creates the plugin jar
     54    **********************************************************
     55    -->
     56    <target name="dist" depends="compile,revision">
     57        <echo message="creating ${ant.project.name}.jar ... "/>
     58        <copy todir="${plugin.build.dir}/resources">
     59            <fileset dir="resources"/>
     60        </copy>
     61        <copy todir="${plugin.build.dir}/images">
     62            <fileset dir="images"/>
     63        </copy>
     64        <copy todir="${plugin.build.dir}/data">
     65            <fileset dir="data"/>
     66        </copy>
     67        <copy todir="${plugin.build.dir}">
     68            <fileset dir=".">
     69                <include name="README"/>
     70                <include name="LICENSE"/>
     71            </fileset>
     72        </copy>
     73        <delete file="MANIFEST" failonerror="no"/>
     74        <manifest file="MANIFEST" mode="update">
     75            <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
     76            <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
     77            <attribute name="Plugin-Class" value="${plugin.class}" />
     78            <attribute name="Plugin-Description" value="${plugin.description}" />
     79            <attribute name="Plugin-Date" value="${version.entry.commit.date}" />
     80            <attribute name="Author" value="${plugin.author}"/>
     81        </manifest>
     82        <antcall target="add-manifest-attribute">
     83            <param name="manifest.attribute" value="Plugin-Link"/>
     84            <param name="propery.name" value="plugin.link"/>
     85            <param name="propery.value" value="${plugin.link}"/>
     86        </antcall>
     87        <antcall target="add-manifest-attribute">
     88            <param name="manifest.attribute" value="Plugin-Icon"/>
     89            <param name="propery.name" value="plugin.icon"/>
     90            <param name="propery.value" value="${plugin.icon}"/>
     91        </antcall>
     92        <antcall target="add-manifest-attribute">
     93            <param name="manifest.attribute" value="Plugin-Early"/>
     94            <param name="propery.name" value="plugin.early"/>
     95            <param name="propery.value" value="${plugin.early}"/>
     96        </antcall>
     97        <antcall target="add-manifest-attribute">
     98            <param name="manifest.attribute" value="Plugin-Requires"/>
     99            <param name="propery.name" value="plugin.requires"/>
     100            <param name="propery.value" value="${plugin.requires}"/>
     101        </antcall>
     102        <antcall target="add-manifest-attribute">
     103            <param name="manifest.attribute" value="Plugin-Stage"/>
     104            <param name="propery.name" value="plugin.stage"/>
     105            <param name="propery.value" value="${plugin.stage}"/>
     106        </antcall>
     107        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}" manifest="MANIFEST">
     108            <zipgroupfileset dir="${plugin.lib.dir}" includes="*.jar"/>
     109        </jar>
     110        <!--<delete file="MANIFEST" failonerror="no"/>-->
     111    </target>
     112    <target name="add-manifest-attribute" depends="check-manifest-attribute" if="have-${propery.name}">
     113        <manifest file="MANIFEST" mode="update">
     114            <attribute name="${manifest.attribute}" value="${propery.value}" />
     115        </manifest>
     116    </target>
     117    <target name="check-manifest-attribute">
     118        <condition property="have-${propery.name}">
     119            <and>
     120                <isset property="${propery.name}"/>
     121                <not>
     122                    <equals arg1="${propery.value}" arg2=""/>
     123                </not>
     124                <not>
     125                    <equals arg1="${propery.value}" arg2="..."/>
     126                </not>
     127            </and>
     128        </condition>
     129    </target>
     130    <!--
     131    **********************************************************
    47132    ** revision - extracts the current revision number for the
    48133    **    file build.number and stores it in the XML property
    49134    **    version.*