注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

使用ANT自动化java软件部署  

2010-10-16 20:50:36|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      以我对ant的理解,它是一个基于XML配置文件的批处理脚本,以前我们在windows上写bat批处理文件直接用文本写,现在呢,在ant里我们用xml文件写,自然功能更强大,更多的是做一些针对java开发的部署打包工作。
      总结一下,97年读书的时候压根没听过xml是个什么玩意,01年刚到温大的时候当时听一个在美国的教授过来给我们做讲座,讲的就是xml文件,听完后我们最大的感受是:一种自描述的数据交换文件。04年自己写论文的时候也采用了xml来配置java的软件界面定位。现在已经是10年,xml文件无处不在,从AJAX应用中的数据交换,到SQL SERVER2008中的报表定义,脚本运行。乃至offcie2007的存储方式就是xml文件。经历一个概念从无到繁荣的阶段,在计算机业用10年就实现了。联想起来上次开会说起来,01年的招生的时候计算机专业还是很繁荣火爆的,到现在10年之后已经青黄不接了,摩尔定律似乎不仅在计算机业发展中起作用,连招生也不能幸免,“三十年河东,三十年河西“的老话在计算机业10年就是一个兴替。想想自己现在搞什么数据挖掘,在现实中应用似乎也还不怎么普遍,但愿10年之后也能够一样在各个计算机系统中遍地开花。。。。
      因为最近学的一个东东用到ant,所以前几天上网找了一下这个教程,比较好的一个入门教程如下:
http://www.cnblogs.com/zxsoft/archive/2008/09/01/1281467.html
       但是我在做这个示例的过程中遇到几个问题,解决后摘录如下:
1.。根据ant版本的不同,示例教程中用的版本是ant1.6,我下载的最新版ant1.8.1,所以需要将该示例文档第10行的
<target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${dest}"/>
</target>

修改为
 <target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${dest}" includeantruntime="false"/>
 </target>

主要是重复编译时需要这个 includeantruntime属性为false。
 
2.最后打包的jar文件运行时需要在命令行运行如下的java命令
使用ANT自动化java软件部署 - wucccsk - wucccsk的博客
但我实际做的时候系统一直提示main-class not found ,主类没有发现,上google上找了一圈,有些帖子竟然建议直接修改生成jar文件中的manifest.mf文件,这不是误人子弟么?难道每次编译一下就要打开jar文件改一次,不累死才怪呢,再继续google,最后在ant的在线tutorial中找到了答案,将
<target name="build" depends="compile">
 <jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
 
修改为:
  <jar jarfile="${hello_jar}" basedir="${dest}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
 </jar>

即让ant在打包过程中自动设置jar的主类。咳,还是在线文档好,看来英语还得继续好好提高。。。
 
3。在示例过程中注意类名的大小写问题,helloworld首字母是否大写。
    
附上上述转贴日志中示例修改后的build.xml文件如下:
 
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
 <property name="src" value="src"/>
 <property name="dest" value="classes"/>
 <property name="hello_jar" value="hello.jar"/>
 <property name="main-class"  value="HelloWorld"/>
 <target name="init">
  <mkdir dir="${dest}"/>
 </target>
 <target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${dest}" includeantruntime="false"/>
 </target>
 <target name="build" depends="compile">
  <jar jarfile="${hello_jar}" basedir="${dest}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
 </jar>
 </target>
 <target name="run" depends="build">
  <java classname="HelloWorld" classpath="${hello_jar}"/>
 </target>
 <target name="clean">
  <delete dir="${dest}" />
  <delete file="${hello_jar}" />
 </target>
 <target name="rerun" depends="clean,run">
  <ant target="clean" />
  <ant target="run" />
 </target>
</project>

 
  评论这张
 
阅读(823)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017