Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<project name="javadoc-task">

        <macrodef name="ant-javadoc">

                <attribute name="projectname"  default="${ant.project.name}"/>
                <attribute name="title"/>
                <attribute name="copyright"      default="Copyright &#169; ERG Transit Systems. All Rights Reserved."/>
                <attribute name="docdir"         default="${basedir}/build/doc"/>
                <attribute name="destdir"        default="@{docdir}/javadoc"/>
                <attribute name="zipname"        default="@{projectname}-javadoc"/>
                <attribute name="versioned"      default="false"/>
                <attribute name="packagenames"   default="*"/>
                <attribute name="compareVersion" default=""/>

                <element name        = "ant-javadoc-paths"
                         optional    = "yes"
                         implicit    = "yes"
                         description = "Allows caller to specify classpath and sourcepath, and any doclets."/>

                <sequential>

                        <mkdir dir="@{destdir}"/>

                        <!-- Generate standard Javadoc API documentation -->
                        <javadoc packagenames = "@{packagenames}"
                                         destdir      = "@{destdir}"
                                         author       = "true"
                                         version      = "true"
                                         use          = "true"
                                         windowtitle  = "@{title}"
                                         failonerror  = "false">
                                <ant-javadoc-paths/>
                                <doctitle><![CDATA[<h1>@{title}</h1>]]></doctitle>
                                <bottom><![CDATA[<font size="-1">@{copyright}</font>]]></bottom>
                                <link offline        = "true"
                                      href           = "http://java.sun.com/j2se/1.5.0/docs/api/"
                                      packagelistLoc = "${env.JAVA_HOME}\docs\api"/>
                        </javadoc>

                        <if>
                                <isset property="${jants.build.version}"/>
                                <then>
                                        <property name="thisversion" value="${jants.build.version}"/>
                                </then>
                                <else>
                                        <echo message="JDiff running on unversioned package..." taskname="ant-javadoc"/>
                                        <property name="thisversion" value="LATEST"/>
                                </else>
                        </if>

                        <!-- Generate JDiff XML file for this package -->
                        <javadoc packagenames = "@{packagenames}"
                                         destdir      = "@{destdir}">
                                <doclet name = "jdiff.JDiff"
                                        path = "${using.ant-javadoc.basedir}/jar/jdiff.jar:${using.ant-javadoc.basedir}/jar/xerces.jar">
                                    <param name="-apidir"  value="@{destdir}"/>
                                        <param name="-apiname" value="@{projectname}-${thisversion}"/>
                                        <param name="-baseURI" value="http://www.w3.org"/>
                                </doclet>
                                <ant-javadoc-paths/>
                        </javadoc>

                        <if>
                                <equals arg1="@{compareVersion}" arg2=""/>
                                <then>
                                        <echo message="No comparison version provided. Skipping JDiff task..." taskname="ant-javadoc"/>
                                </then>
                                <else>
                                        <if>
                                                <available file="${jats.home}/@{projectname}/@{compareVersion}/doc/javadoc/@{zipname}.zip"/>
                                                <then>
                                                        <!-- Find the latest released version of this project; this is what we will compare against. -->
                                                        <unzip src  = "${jats.home}/@{projectname}/@{compareVersion}/doc/javadoc/@{zipname}.zip"
                                                                   dest = "${basedir}/build/doc/tmp">
                                                                <patternset includes="@{projectname}-@{compareVersion}.xml"/>
                                                        </unzip>

                                                        <if>
                                                                <available file="${basedir}/build/doc/tmp/@{projectname}-@{compareVersion}.xml"/>
                                                                <then>
                                                                        <!-- Perform actual JDiff comparison -->
                                                                        <javadoc private     = "yes"
                                                                                         sourcepath  = "${using.ant-javadoc.basedir}"
                                                                                         destdir     = "${basedir}/build/doc/javadoc"
                                                                                         sourcefiles = "${using.ant-javadoc.basedir}/jar/Null.java">
                                                                                <doclet name = "jdiff.JDiff"
                                                                                                path = "${using.ant-javadoc.basedir}/jar/jdiff.jar:${using.ant-javadoc.basedir}/jar/xerces.jar">
                                                                                        <param name="-stats"/>
                                                                                        <param name="-oldapidir" value="${basedir}/build/doc/tmp"/>
                                                                                        <param name="-oldapi"    value="@{projectname}-@{compareVersion}"/>
                                                                                        <param name="-newapidir" value="@{destdir}"/>
                                                                                        <param name="-newapi"    value="@{projectname}-${thisversion}"/>
                                                                                        <!--    <param name="-javadocold" value="../../olddocs/"/>-->
                                                                                        <param name="-javadocnew" value="../"/>
                                                                                </doclet>
                                                                        </javadoc>
                                                                </then>
                                                                <else>
                                                                        <echo message="Comparison version does not contain a JDiff XML file. Skipping JDiff task..."/>
                                                                </else>
                                                        </if>
                                                </then>
                                                <else>
                                                        <echo message="No Javadoc available in @{projectname} version @{compareVersion}, or release does not exist. Skipping JDiff task..." taskname="ant-javadoc"/>
                                                </else>
                                        </if>
                                </else>
                        </if>

                        <zip destfile     = "@{docdir}/@{zipname}.zip"
                             basedir      = "@{destdir}"
                             update       = "true"/>

                </sequential>

        </macrodef>

</project>