項目研發中用到的一個對JAR進行數字簽名的ANT構建文件(備忘錄)
<?xml version="1.0" encoding="UTF-8"?>
<project name="MakeTopoJar" default="deployTopoJar" basedir=".">
<!-- 設定系統環境變量名為env,以備下邊使用 -->
<property environment="env"/>
<!-- 設定構建JAR時的路徑與文件名參數,注意:下邊的屬性設定時,如果屬性代表路徑,則為了適應相應操作系統可用location代替value;
如果屬性代表文件名,則必須用value. -->
<property name="src" value="./src" />
<property name="webRoot" location="WebRoot"/>
<property name="webInf" location="${webRoot}/WEB-INF"/>
<property name="destDir" location="${webInf}/classes"/>
<property name="classPath" location="${webInf}/lib"/>
<property name="topoJarPath" location="${webRoot}/topo/lib"/>
<property name="jarName" value="topo.jar"/>
<!-- 數字簽名用的密鑰信息參數 -->
<property name="keystoreName" value="esmkeystore"/>
<property name="storepass" value="esmsystem"/>
<property name="keystore" location="${topoJarPath}/${keystoreName}"/>
<property name="keypass" value="esmsystem"/>
<property name="keysize" value="1024"/>
<property name="alias" value="esmkey"/>
<property name="validity" value="365"/>
<property name="jarsigner" value="${env.JAVA_HOME}/bin/jarsigner.exe"/>
<!-- 部署數字簽名后的JAR到TOMCAT相應目錄 -->
<property name="deployJarPath" location="${env.TOMCAT_HOME}/webapps/QT_ESM/topo/lib"/>
<target name="build">
<mkdir dir="${destDir}" />
<javac failonerror="false" encoding="utf-8" nowarn="true" debug="true" optimize="on" srcdir="${src}"
destdir="${destDir}" includes="com/quantanetwork/esm/**/*.java, org/acegisecurity/ui/webapp/**/*.java">
<classpath>
<fileset dir="${classPath}">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>
</target>
<!-- 構建JAR文件 -->
<target name="makeJar" depends="build">
<copy todir="${destDir}/classes">
<fileset dir="${src}">
<include name="com/quantanetwork/esm/ui/topo/show/icons/*.*" />
</fileset>
</copy>
<jar jarfile="${topoJarPath}/${jarName}" basedir="${destDir}"
includes="com/quantanetwork/esm/logic/topo/**, com/quantanetwork/esm/ui/topo/**">
</jar>
</target>
<!-- 創建證書 -->
<target name="genericKey">
<echo message="genkey..."/>
<delete>
<fileset dir="${topoJarPath}">
<include name="${keystoreName}"/>
</fileset>
</delete>
<genkey keystore="${keystore}" storepass="${storepass}" alias="${alias}" keypass="${keypass}" keysize="${keysize}"
verbose="true" validity="${validity}" dname="CN=Ant Group, OU=Jakarta Division, O=Apache.org, C=ZH">
</genkey>
<echo message="genkey... done"/>
</target>
<!-- 對JAR進行數字簽名 -->
<target name="signJar" depends="makeJar, genericKey">
<echo message="jarsigner..." />
<exec executable="${jarsigner}" dir="${topoJarPath}">
<arg line="-keystore"/>
<arg value="${keystore}"/>
<arg line="-storepass"/>
<arg value="${storepass}"/>
<arg line="${jarName}"/>
<arg line="${alias}"/>
</exec>
<!-- 下邊這種方式也可以 -->
<!--signjar keystore="${keystore}" storepass="esmsystem" jar="${jarName}" alias="${alias}">
<fileset dir="${topoJarPath}">
<include name="${jarName}" />
</fileset>
</signjar-->
<echo message="jarsigner... done." />
</target>
<!-- 部署JAR文件 -->
<target name="deployTopoJar" depends="signJar">
<copy todir="${deployJarPath}" file="${topoJarPath}/${jarName}">
</copy>
</target>
</project>
posted on 2008-03-12 14:58 心無痕 閱讀(1518) 評論(1) 編輯 收藏 所屬分類: JAVA