The signjar.xml source code
<project name="signjartest" default="help" basedir="..">
<property name="classes.dir" value="../../../build/classes"/>
<property name="sign.dir" location="signedjars" />
<property name="subdir" location="${sign.dir}/subdir" />
<property name="test.jar" location="${sign.dir}/signtest.jar" />
<property name="subdirtest.jar" location="${subdir}/signtest.jar" />
<macrodef name="assertSigned">
<attribute name="jar" default="${test.jar}" />
<sequential>
<fail message="not signed: @{jar}" >
<condition>
<not>
</condition>
</fail>
</sequential>
</macrodef>
<presetdef name="sign-base">
<signjar alias="testonly" keystore="testkeystore"
storepass="apacheant"/>
</presetdef>
<presetdef name="verify-base">
<verifyjar keystore="testkeystore"
storepass="apacheant"/>
</presetdef>
<presetdef name="sign">
<sign-base jar="${test.jar}" />
</presetdef>
<target name="init">
<mkdir dir="${sign.dir}" />
<mkdir dir="${subdir}" />
</target>
<target name="jar" depends="init">
<jar jarfile="${test.jar}" basedir="${classes.dir}" includes="**/Task.class"/>
</target>
<target name="clean">
<delete dir="${sign.dir}"/>
</target>
<target name="help">
<echo>This build is for use with Ant's test cases
</target>
<target name="basic" depends="jar">
<sign />
<assertSigned/>
</target>
<target name="sigfile" depends="jar">
<sign sigfile="TEST"/>
<assertSigned/>
</target>
<target name="maxmemory" depends="jar">
<sign maxmemory="128m"/>
<assertSigned/>
</target>
<target name="urlKeystoreFile" depends="jar">
<sign keystore="file://../testkeystore"
maxmemory="128m"/>
<assertSigned/>
</target>
<target name="urlKeystoreHTTP" depends="jar">
<sign
keystore="http://ant.apache.org/webtest/testkeystore"
/>
<assertSigned/>
</target>
<target name="preserveLastModified" depends="jar">
<touch file="${test.jar}" datetime="06/28/2000 2:02 pm"/>
<sign
preservelastmodified="true"/>
<assertSigned />
<fail message="preserveLastModified did not preserve the last modified time">
<condition>
<not>
<isfileselected file="${test.jar}" >
<date datetime="06/28/2000 2:02 pm" when="equal"/>
</isfileselected>
</not>
</condition>
</fail>
</target>
<target name="testFileset" depends="jar">
<sign-base>
<fileset file="${test.jar}" />
</sign-base>
<assertSigned/>
</target>
<target name="testFilesetAndJar" depends="jar">
<sign-base jar="${test.jar}" lazy="true">
<fileset file="${test.jar}" />
</sign-base>
<assertSigned/>
</target>
<target name="testFilesetAndSignedJar" depends="jar">
<sign-base signedjar="${sign.dir}/newfile.jar">
<fileset file="${test.jar}" />
</sign-base>
</target>
<target name="testPath" depends="jar">
<sign-base>
<path>
<fileset file="${test.jar}" />
</path>
</sign-base>
<assertSigned/>
</target>
<target name="testPathAndJar" depends="jar">
<sign-base jar="${test.jar}" lazy="true">
<path>
<fileset file="${test.jar}" />
</path>
</sign-base>
<assertSigned/>
</target>
<target name="testPathAndSignedJar" depends="jar">
<sign-base signedjar="${sign.dir}/newfile.jar">
<path>
<fileset file="${test.jar}" />
</path>
</sign-base>
</target>
<target name="testSignedJar" depends="jar">
<sign signedjar="${subdirtest.jar}"/>
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testDestDirAndSignedJar" depends="jar">
<sign destDir="${subdir}" signedjar="${sign.dir}/newfile.jar"/>
</target>
<target name="testDestDir" depends="jar">
<sign destDir="${subdir}" />
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testDestDirFileset" depends="jar">
<sign-base destDir="${subdir}">
<fileset file="${test.jar}" />
</sign-base>
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testDestDirPath" depends="jar">
<sign-base destDir="${subdir}">
<path>
<fileset file="${test.jar}" />
</path>
</sign-base>
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testMapperNoDest" depends="jar">
<sign-base >
<flattenmapper />
<fileset file="${test.jar}" />
</sign-base>
</target>
<target name="testMapperFileset" depends="jar">
<sign-base destDir="${subdir}">
<fileset file="${test.jar}" />
<flattenmapper />
</sign-base>
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testMapperPath" depends="jar">
<sign-base destDir="${subdir}">
<path>
<pathelement location="${test.jar}" />
</path>
<flattenmapper />
</sign-base>
<assertSigned jar="${subdirtest.jar}"/>
</target>
<target name="testTwoMappers" depends="jar">
<sign-base destDir="${subdir}">
<fileset file="${test.jar}" />
<flattenmapper />
<flattenmapper />
</sign-base>
</target>
<target name="testNoAlias" depends="jar">
<signjar keystore="testkeystore"
jar="${test.jar}"
storepass="apacheant"/>
</target>
<target name="testNoFiles" >
<sign-base />
</target>
<target name="testNoStorePass" depends="jar">
<signjar keystore="testkeystore"
alias="testonly"
jar="${test.jar}"/>
</target>
<target name="testTsaLocalhost" depends="jar">
<sign tsaurl="http://localhost:0/" />
</target>
<target name="testSysProperty" depends="jar">
<sign>
<sysproperty key="ant.home" value="${ant.home}" />
</sign>
<assertSigned/>
</target>
<target name="testVerifyJar" depends="basic">
<verify-base jar="${test.jar}"/>
</target>
<target name="testVerifyJarCertificates" depends="basic">
<verify-base jar="${test.jar}" certificates="true" verbose="true"/>
</target>
<target name="testVerifyJarUnsigned" depends="jar">
<verify-base jar="${test.jar}"/>
</target>
<target name="testVerifyJarNotInKeystore" depends="basic">
<verifyjar jar="${test.jar}" certificates="true" verbose="true"/>
</target>
<target name="testVerifyFileset" depends="basic">
<verify-base >
<fileset file="${test.jar}" />
</verify-base>
</target>
<target name="testVerifyPath" depends="basic">
<verify-base >
<path>
<pathelement location="${test.jar}" />
</path>
</verify-base>
</target>
<target name="testVerifyNoArgs">
<verify-base />
</target>
</project>
Other Ant examples (source code examples)
Here is a short list of links related to this Ant signjar.xml source code file: