w11h22j33 发表于 2013-2-7 15:20:29

Ant搞定全部开发流程【转】

由于涉及到打包签名,所以在开始全部工作之前,我们先做好签名的准备工作。
那就是建立密钥库(keystore)。只有建立好了密码库,才能在签名工具中顺利地实现签名。
   这里建立密钥库要用到j2SDK提供的工具keytool,我们通过命令行来运行就行了。关于这个工具的详细用法请见j2SDK官方文档的%JAVA_DOC%\tooldocs\windows\keytool.html目录下。
keytool -genkey -dname "cn=Wuxing, ou=Gdyj, o=Geoway, c=CN"   -alias geoway -keypass geoway -keystore d:\keystore   -sto
repass geoway
这个命令在D盘根目录下创建了一个名为keystore的密钥库文件。密码是geoway,它为“通用名为Wuxing,组织部门为Gdyj,组织为Geoway,国家代码为CN”实体生成了一个公有/私有的密钥对。它用默认的“DSA”密钥产生算法来创建密码,达1024位长。
注意:为了顺利地调用上述命令,请将%JAVA_HOME%\bin目录加入你的系统环境变量path中。
说明:下面的ANT配置文件build.xml中,出现中文的地方,请根据实际情况进行修改。
下面正式开始我们的ANT配置。
<!—建立工程名为Client,默认的任务是compile -->
<project name="Client" default="compile" basedir=".">
  <!—  设置全局属性  -->
  <property name="src"           value="源代目录"/>
  <property name="classes"         value="类目录"/>
  <property name="docs"         value="API文档目录"/>
   <property name="version"         value="版本号"/>
  <property name="lib" value="编译时要调用的库目录"/> 
  <property name="clientjar"         value="打包目录"/>
   <property name="profile"      value="proguard配置文件路径"/>
   <property name="proguardhome"  value=" proguard3.0.7目录"/>
<!—
  为了更进一步体现Ant强大的功能,我们把签名过程写在批处理文件中,供ANT调用.  
签名代码如下:
jarsigner -keystore d:\keystore -storepass geoway -keypass geoway -signedjar Client.jar Client_1.jar geoway
注意:得先定位目录到签名包所在目录
-->
   <property name="sign"  value="签名批处理文件路径"/>
   <property name="IALOC"  value="InstallAnywhere安装目录"/>
   <property name="INSTALLLOC"         value=" IA配置文件路径"/>
      <!—  任务1:清空  -->
  <target name="clean">
  <delete failonerror="false" includeemptydirs="true">
      <fileset dir="${classes}"/>
   </delete>
  <delete failonerror="false" includeemptydirs="true">
        <fileset dir="${clientjar}\com"/>
      </delete>
   <mkdir dir="${classes}" />
  </target>
<!—  任务2:编译  -->
  <target name="compile">  
    <javac srcdir="${src}" destdir="${classes}" debug="true"
           optimize="false" deprecation="true">
      <classpath>
   <fileset dir="${lib}">
     <include name="**/*.jar"/>
   </fileset>
      </classpath>          
    </javac>  
   <copy todir="${classes}">
      <fileset dir="${src}">
      <include name="**/*.properties"/>
      <include name="**/*.xml"/>
      <include name="**/*.gif"/>
      <include name="**/*.png"/>
     </fileset>
   </copy> 
  <!—  任务3:将文件全局复制到打包目录  -->
  <copy todir="${clientjar}">
        <fileset dir="${classes}">
              <include name="**/*.*"/>
        </fileset>
     </copy>
  </target>
   <!—任务4: 调用签名批处理文件  -->
  <target name="run">
   <exec executable="${sign}">
   </exec>
   </target>
   <!—任务5: 混淆
注意:要先安装Proguard,并用图形界面做好配置文件,本文附录提供了简单介绍和下载地址。
-->
<target name="obfuscate">
     <taskdef resource="proguard/ant/task.properties"
              classpath="${proguardhome}/lib/proguard.jar" />
     <proguard configuration="${profile}" />
      <!— 混淆完成之后要进行签名  -->
      <exec executable="${sign}">
      </exec>
  </target>
<!—任务6: 用InstallAnywhere构造安装包  
注意:要先安装InstallAnywhere,并用其做好配置文件。
-->
    <target name="buildInstaller">
    <taskdef name="buildinstaller" classname="com.zerog.ia.integration.ant.InstallAnywhereAntTask"/>
   <buildfullinstaller 
   IAlocation="${IALOC}"
   IAProjectFile="${INSTALLLOC}"
   BuildWindowsWithVM="true"
      OptimizeWebInstaller="true"
   InstallerStdErrRedirect="C:\console.txt"
   />   
      </target>
   <!—任务7: 利用Javadoc工具生成API文档  -->
   <target name="docs" depends="compile">      
        <delete>
           <fileset dir="${docs}/api" includes="**/*.*" />
        </delete>    
        <javadoc packagenames="生成的API文档要用的源代码包名"
              sourcepath="${src}"
              destdir="${docs}/api"
              author="true"
              version="true"
              use="true"
              windowtitle="Geoway Client API version ${version}">
           <doctitle>文档头内容,可用HTML代码</doctitle>
           <bottom>文档底部内容,可用HTML代码</bottom>
           <classpath>
              <fileset dir="${lib}">
                 <include name="**/*.jar"/>
              </fileset>
              <pathelement location="${classes}"/>
           </classpath>
        </javadoc>
      </target>
</project>
附录:Proguard简介绍及下载

ProGuard是一个开源的混淆和优化工具,不但能在类内部的代码段内部对代码进行混淆,更能将类名、各种类型方法、变量进行混淆(其实如果建立的代码包不要作为库在外部调用的话,其实进行全混淆是一种很不错的选择)。
下载地址为:
 http://easynews.dl.sourceforge.net/sourceforge/proguard/proguard3.0.7.zip
页: [1]
查看完整版本: Ant搞定全部开发流程【转】