http://www.csdn.net/develop/article/20/20474.shtm这篇文章可能有你想要的东西:
用ANT构建java可执行程序Ant是现在进行项目比较好的管理工具,通过Ant可以按照自己的需要来管理自己的工程.第一步:配置自己的工具j2sdk和ant.j2sdk在http://java.sun.com下载.ant在http://www.apache.org下载.设置环境变量JAVA_HOME=E:\j2sdk1.4.1_0;和ANT_HOME=e:\ant; PATH= E:\j2sdk1.4.1_04\bin;E:\ant\bin;第二步:ant在编译时需要一个build.xml的文件.另外为了使程序便于移植到其他方面,做一个build.properties文件保存ant的基本属性.Ant的基本属性文件如下:具体属性如下所示:#此文档用来设定一些常用属性#档案名称name=HelloWorld#合成后jar的档名jar=${name}.jar#原始档所在路径src.dir=src#资源档所在路径res.dir=res#建模产物存放位置build.dir=build#编译后类别档的存放位置build.dir.classes=${build.dir}/classes#jar最终放置位置build.dir.bin=${build.dir}/bin#未经混淆的jar档名build.dir.bin.jarunobfus=${build.dir.bin}/${name}-unobfus.jar#经混淆的jar档名build.dir.bin.jar=${build.dir.bin}/${jar}#JDK所在的路径java.home=E:\j2sdk1.4.1_04#JDK内附工具所在路径java.home.bin=${java.home}/bin#混淆器控制档obfuscator.lib=retroguard.jarobfuscator.script=script.rgs第三步:建立build.xml.用ant来编译来它产生文件.Build.xml中具体属性的意思为:Mkdir是建立目录,delete是删除目录,javac是编译命令,javac中子项有debug=”off”是关闭断点调试.srcdir是原文件所在目录,destdir是编译后目标文件所在目录.jar是打包命令,basedir是要打包文件所在目录,jarfile是编译后是没有经过混淆器后生成的jar文件.manifest.mf是菜单文件,包含所执行的所要类.fileset求的是所要的资源文件所在目录.java是执行混淆器,有三个命令参数,原目标jar文件,混淆后的jar文件,不混淆的清单列表.混淆器用的是Open Source的RetroGuard.在http://www.retrologic.com/下载.在CLASSPATH中设置retroguard.jar文件路径.depends属性是target之间相互依赖的关系.只要执行 default属性是ant默认执行的参数. Ant 和 ant all是一样的.<?xml version="1.0" encoding="gb2312" ?><project name="第一个java程序" default="all" basedir=".">    <!--引入位于build.properties之中的常用属性 -->     <property file="build.properties"/>     <target name="prepare" description="准备工作">         <mkdir dir="${build.dir}"/>         <mkdir dir="${build.dir.classes}"/>     </target>      <target name="cleandir" description="清除目录">         <delete dir="${build.dir}"/>     </target>     <target name="compile" description="原始编译码" depends="prepare">        <javac debug="off"               srcdir="${src.dir}"               destdir="${build.dir.classes}"         />     </target>     <target name="package" description="包装成jar文件" depends="compile">        <mkdir dir="${build.dir.bin}"/>        <jar basedir="${build.dir.classes}"             jarfile="${build.dir.bin.jarunobfus}"             manifest="MANIFEST.MF">            <fileset dir="${res.dir}"/>         </jar>    </target>    <target name="obfuscate" description="使用混淆器" depends="package">        <java fork="yes" classname="RetroGuard" classpath="${obfuscate.lib}">           <arg line="${build.dir.bin.jarunobfus}"/>           <arg line="${build.dir.bin.jar}"/>           <arg line="${obfuscator.script}"/>        </java>    </target>    <target name="all" description="完成所有程序" depends="cleandir,obfuscate">    </target></project>第四步:编写源文件.放到src目录下.第五步:编写菜单文件manifest.mf,Main是主类.demo是包.Main-Class: demo.Main第六步:编写混淆器的列表文件script.rgs.class demo/Main public这样Main.class不会被混淆.第七步:执行在包含build.xml下执行ant命令.如果src目录下是gui程序这样在build\bin下双击jar文件这样gui程序这样就可以执行了.

解决方案 »

  1.   

    <target name="obfuscate" description="使用混淆器" depends="package">        <java fork="yes" classname="RetroGuard" classpath="${obfuscate.lib}">           <arg line="${build.dir.bin.jarunobfus}"/>           <arg line="${build.dir.bin.jar}"/>           <arg line="${obfuscator.script}"/>        </java>    </target>这个地方有问题,运行时会提示“RetroGuard”类找不到:(
      

  2.   

    转贴,原贴:
    http://www.java-cn.com/technology/technology_detail.jsp?id=1842
    下面是一个 ANT 工程文件的示例 build.xml,供大家参考。更多的使用方法请参阅 ANT 自带的文档。 <?xml version="1.0"?> 
    <!-- 
    ========================================================================== 
    xiaoyoung BBS build file 
    Legal: Copyright (c) 2000,2001,2002 Young 
    ============================================================================== 
    --> 
    <project default="dist" basedir="."> 
    <property name="name" value="bbs"/> 
    <property name="version" value="1"/> 
    <property name="year" value="2002"/> 
    <property name="language" value="en"/> 
    <!-- 
    Give user a chance to override without editing this file 
    (and without typing -D each time he compiles it) 
    --> 
    <property file=".ant.properties"/> 
    <property file="${user.home}/.ant.properties"/> 
    <!-- 
    There should be no need to override default compiler but need to change 
    javac task to run without this 
    --> <property name="build.compiler" value="jikes"/> 
    <!-- 
    <property name="build.compiler" value="classic"/> 
    --> <!-- 
    these are here only for those who use jikes compiler. For other 
    developers this part makes no difference. 
    --> 
    <property name="build.compiler.emacs" value="on"/> 
    <property name="build.compiler.pedantic" value="true"/> 
    <property name="build.compiler.depend" value="true"/> 
    <property name="build.compiler.fulldepend" value="true"/> <property name="debug" value="on"/> 
    <property name="optimize" value="off"/> 
    <property name="deprecation" value="off"/> <!-- 
    =================================================================== 
    Set the properties for intermediate directory 
    =================================================================== 
    --> 
    <property name="build.dir" value="build"/> 
    <property name="build.classes" value="${build.dir}/classes"/> 
    <property name="build.webapps" value="${build.dir}/webapps"/> <property name="dist.dir" value="dist"/> 
    <property name="dist.classes" value="${dist.dir}/WEB-INF/classes"/> 
    <property name="src.dir" value="src"/> 
    <property name="classes.dir" value="${src.dir}/classes"/> 
    <property name="webapps.dir" value="${src.dir}/webapps"/> <path id="project.class.path"> 
    <pathelement path="${java.class.path}" /> 
    <pathelement path="${build.classes}" /> 
    </path> <!-- =================================================================== --> 
    <!-- Help on usage --> 
    <!-- =================================================================== --> 
    <target name="usage"> 
    <echo message=""/> 
    <echo message=""/> 
    <echo message="xiaoyoung BBS Build file"/> 
    <echo message="-------------------------------------------------------------"/> 
    <echo message=""/> 
    <echo message=" available targets are:"/> 
    <echo message=""/> 
    <echo message=" compile --> compiles the source code"/> 
    <echo message=" dist --> generates the distribution, packed"/> 
    <echo message=" clean --> cleans up the directory"/> 
    <echo message=""/> 
    <echo message=" See the comments inside the build.xml file for more details."/> 
    <echo message="-------------------------------------------------------------"/> 
    <echo message=""/> 
    <echo message=""/> 
    </target> <!-- =================================================================== --> 
    <!-- Building 
    <!-- =================================================================== --> 
    <target name="prepare"> 
    <mkdir dir="${build.classes}"/> 
    </target> <target name="compile" depends="prepare"> 
    <javac destdir="${build.classes}" 
    optimize="${optimize}" 
    deprecation="${deprecation}"> 
    <classpath refid="project.class.path" /> 
    <src path="${classes.dir}" /> 
    </javac> 
    </target> <target name="dist" depends="compile"> 
    <mkdir dir="${dist.dir}" /> 
    <copy todir="${dist.dir}" > 
    <fileset dir="${webapps.dir}" /> 
    </copy> 
    <mkdir dir="${dist.classes}" /> 
    <copy todir="${dist.classes}" > 
    <fileset dir="${build.classes}" /> 
    </copy> 
    </target> <!-- =================================================================== --> 
    <!-- Cleans everything --> 
    <!-- =================================================================== --> 
    <target name="setup-properties" > 
    <tstamp/> 
    <property name="dist.dir" value="dist"/> 
    </target> <target name="clean" depends="setup-properties"> 
    <delete dir="${build.dir}"/> 
    <delete dir="${dist.dir}"/> 
    <delete verbose="true"> 
    <fileset dir="." includes="**/*~" defaultexcludes="no"/> 
    <fileset dir="." includes="**/*.bak"/> 
    </delete> 
    </target> </project>
      

  3.   

    http://jakarta.apache.org/
    http://www.javaresearch.org/article/showarticle.jsp?column=31&thread=2268
    http://ant.apache.org/