ANT编译JAVA源码

       最近特别想研究页游客户端,于是找了套有前有后有资源的页游源码。唯一遗憾的是这套源码服务器是JAVA写的,不过也正好有机会看一看JAVA写的服务器。

       服务器代码在win下导入eclipse, 编译打包运行都没问题。可传到了linux上却跑不起来,换了很多JDK版本都没用,我又只有linux的vps,没有windows的,总不能每次跑客户端都在本地跑一个服务器吧。最后没办法,只能在linux上安装ANT,准备用ANT编译打包一个可以运行的JAR包。

        java源文件编译后会生成可直接运行的.class文件,运行时jre会从classpath中以命名空间的层级为路径加载所依赖的类。一般都会将这堆.class打包成一个jar文件,并用一个配置文件标识主入口和外部依赖的jar。

        ant就是一个可以根据配置自动完成这些工作的编译部署工具。基本上和make读取makefile自动编译一样,ant会读取build.xml并执行一系列动作。经过一天的摸索,最后终于在linux上编译打包运行了这份代码。经此一役,也基本上弄清楚了java的编译过程和ANT的用法。 最后的build.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="warriors" default="compile" basedir="./">
  <path id="classpath">
    <fileset dir="." includes="lib/*.jar"/>
  </path>

  <target name="clean">
    <delete dir="build"/>
  </target>

  <target name="compile" depends="clean">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes" encoding="UTF-8" listfiles="true" includeAntRuntime="false">
      <classpath refid="classpath"/>
      <compilerarg value="-Xlint:unchecked"/>
    </javac>
  </target>

  <target name="run" depends="compile">
    <java classname="com.yayo.warriors.YayoDaemon">
      <classpath refid="classpath"/>
      <classpath>
        <pathelement path="build/classes"/>
      </classpath>
    </java>
  </target>

  <target name="jar" depends="compile">
    <pathconvert targetos="unix" property="string.classpath" pathsep=" " refid="classpath">
      <map from="${basedir}/" to="" />
    </pathconvert>

    <jar destfile="./warriors.jar" basedir="build/classes">
      <manifest>
        <attribute name="Main-Class" value="com.yayo.warriors.YayoDaemon"/>
        <attribute name="Class-Path" value="resources/ ${string.classpath}"/>
      </manifest>
    </jar>
  </target>
</project>

       最后和eclipse生成的jar对比,发现除了有的.class不一样其他都一样,也没发现具体是什么差别造成的。也许只有再深入一步才能知晓这个问题的答案了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值