<?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 failοnerrοr="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>
今天总结下本人一直使用的在J2ME,BlackBerry和Android平台下签名方法。
J2ME:
1.生成key store. 用JAVA_HOME\bin目录下"keytool.exe"命令生成。
E.g.
D:\Java\jdk1.5.0_15\bin>keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 100002.生成key store后还得修改下证书,必须需要手机厂商承认的证书,这就得去花钱买了,Verisign和Thawte都能买到证书, 然后进行签名。3.本人一般都用ANTENNA ANT生成J2ME程序,所以签名相对简单些,直接调用"Wtksign"任务来进行数字签名。
E.g.
D:\Java\jdk1.5.0_15\bin>jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name--------------------------------------------------------------------------------BlackBerry:
黑莓比较麻烦些,而且对于中国用户来说很不方便。首先,你得去购买个签名账户,然后才能进行
签名。据说好像不对中国用户提供,我也没有研究过,都是公司买个签名。购买后RIM会发给你3个.csi文件,分别对应不同的API使用。.csi文件生成key之后就不能在别的电脑使用了,这点也不爽。
假设你真的购买到.csi文件并且生成完key后,调用BB_HOME\bin目录下的SignatureTool.jar文件,选择你需要签名的程序最后点Request就进行签名了,如果成功了在Status一栏里会看到Signed字样。
好了,先到这吧。回家做饭去了
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/winsonx/archive/2009/04/28/4133640.aspx