当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于Java中ANT的配置和使用
帖子发表于 : 2007-04-22 15:41 
头像

注册: 2007-03-01 20:46
帖子: 2393
地址: 湖南长沙
送出感谢: 0 次
接收感谢: 0 次
看到Ubuntu论坛中Java版里边几乎都是讨论Eclipse和Netbeans的使用和配置,很少见到有关于ANT的。其实ANT是学Java必不可少的一样工具,即Java进行持续整合不可少的工具。
目前说来,几乎每一个开源的知名Java项目(如Spring, Hibernate, Struts, Veiocity...)都会提供相应的ANT Build文件。
Java的配置就不多说了,最重要的是要有JAVA_HOME这个环境变量。
ANT的配置也很简单:
1. 去这里下载一个ANT的压缩包:http://ant.apache.org/bindownload.cgi
2. 将apache-ant-<version>.tar.gz解压到任意目录,假设为/home/jack/JavaLibraries/apache-ant-1.7.0
3. 设置环境变量,我采用的方法是编辑~/.bashrc文件对终端程序:
代码:
sudo vim ~/.bashrc

在该文件里边添加:
代码:
export ANT_HOME="/home/jack/JavaLibraries/apache-ant-1.7.0"
export PATH="${PATH}:${ANT_HOME}"

重启终端程序再输入:
ant -version
如果出现:Apache Ant version 1.7.0 compiled on December 13 2006
或者类似的,就说明ANT配置成功。

接下来就是关于ANT的build.xml文件,这也是使用ANT的最重要的部分。在开始任何一个项目的时候,都应该确定自己项目的目录结构,当然,你也可以设计一种通用的目录结构,以下是我常用的目录结构:
代码:
+ <project_dir>
  + src // 源码文件夹
    + java // Java实现代码
    + test // 测试代码
  + build // Class文件输出文件夹
    + classes
    + test
  + doc // 文档目录
    + src // 文档的源码(如Docbook XML或者latex)
    + api
    + test // 测试文档
    + html
    + pdf
    + resources // Images, CSS...
  + lib // Java包
    + build
    + runtime

如果是WEB开发的项目,目录结构就有所不同,例如会添加web文件夹,里边包含了整个WAR文件里的所有内容,这样打包就非常方便。

目录结构确定好后,开始编写build.xml。Build文件的编写是很有学问的,呵呵,和目录结构一样,可以编写一个通用的。一般的Build文件主要由三大部分组成:Properties, Paths和Targets。Properties就不用说了,定义了一系列属性,如源码文件夹的位置,项目的名字等等;Paths主要定义了一系列的路径,如Classpath等等;Targets是最重要的,每一个Target都是一个ANT的目标,在命令行上输入ant <target_name>就可以执行相应的ANT目标,非常方便(前提是你得先写好ANT Build文件),Target底下包含一些列的命令来帮助完成该目标。

关于Properties的定义,有两种做法:
1. 直接用XML进行编写
2. 用Java Properties文件编写,然后进行导入
我想是个人就会选择第二种(当然,也要看情况而定),因为更简单。
针对于以上的目录结构,我一般的build.properties内容如下:
代码:
src.dir = src
src.java = ${src.dir}/java
src.test = ${src.dir}/test

bin.dir = build
bin.java = ${bin.dir}/classes
bin.test = ${bin.dir}/test

lib.dir = lib
lib.bt = ${lib.dir}/build
lib.rt = ${lib.dir}/runtime

doc.dir = doc
doc.api = ${doc.dir}/api
doc.test = ${doc.dir}/test
doc.html = ${doc.dir}/html
doc.pdf = ${doc.dir}/pdf
doc.rsc = ${doc.dir}/resources


有了这个以后,就可以在build.xml中进行导入:<property file="build.properties" />
有了这些属性,编写Build文件就方便了。在Java开发中,最烦人的就是关于Classpath的设置,幸运的是ANT为我们提供了非常方便的Classpath设置方法:
代码:
<path id="master.cp">
    <fileset dir="${lib.rt}">
        <include name="**/*.jar" />
    </fileset>
    <pathelement location="${bin.java}" />
    <pathelement location="${bin.test}" />
</path>

然后在编译和运行Java程序的时候,可以分别这样用:
代码:
编译:
<javac ... classpathref="master.cp" />
运行:
<java ... classpathref="master.cp" />

当然,你也可以将编译时和运行时的Classpath分开,以上是将两个合并了。

Java的Build循环一般都是:CVS/SVN Checkout,Compile, Test, Documentation, Package。ANT可以帮助我们完成整个循环。我曾经在年纪里作过关于“XML与软件开发”的报告,里边有关于ANT是如何在软件开发中得到应用的,可以去这里下载幻灯片:http://www.blogjava.net/Files/anticlockwise/antslides.rar
幻灯片是用Python ReStructedText生成的S5格式,直接在Firefox中打开浏览。

一份我的Ant build.xml:

代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="websterm" basedir=".">
   <property file="build.properties" />

   <path id="master.cp">
      <fileset dir="${lib.dir}">
         <include name="*.jar" />
      </fileset>
      <pathelement location="${bin.java}" />
      <pathelement location="${bin.test}" />
   </path>

   <target name="init">
      <mkdir dir="${src.java}" />
      <mkdir dir="${src.test}" />

      <mkdir dir="${web.inf}" />
      <mkdir dir="${lib.dir}" />
   </target>

   <target name="clean">
      <delete dir="${bin.java}" />
      <delete dir="${bin.test}" />
   </target>

   <target name="compile">
      <mkdir dir="${bin.java}" />
      <javac source="1.5"
             target="1.5"
             srcdir="${src.java}"
             destdir="${bin.java}"
             classpathref="master.cp" />
      <copy todir="${bin.java}">
         <fileset dir="${src.java}">
            <exclude name="**/*.java" />
         </fileset>
      </copy>
   </target>

   <target name="test.compile">
      <mkdir dir="${bin.test}" />
      <javac source="1.5"
             target="1.5"
             srcdir="${src.test}"
             destdir="${bin.test}"
             classpathref="master.cp" />
      <copy todir="${bin.test}">
         <fileset dir="${src.test}">
            <exclude name="**/*.java" />
         </fileset>
      </copy>
   </target>

   <target name="test">
      <mkdir dir="${doc.test}" />
      <junit printsummary="yes" haltonfailure="yes">
         <classpath refid="master.cp" />

         <formatter type="plain" usefile="no" />
         <formatter type="xml" usefile="yes" />

         <batchtest todir="${doc.test}" fork="yes">
            <fileset dir="${src.test}">
               <include name="**/*Test.java" />
            </fileset>
         </batchtest>
      </junit>
   </target>

   <target name="doc.api">
      <mkdir dir="${doc.api}" />
      <javadoc destdir="${doc.api}"
               classpathref="master.cp"
               version="true"
               author="true"
               windowtitle="Websterm API">
         <fileset dir="${src.java}" defaultexcludes="yes">
            <include name="**/*.java" />
         </fileset>
         <doctitle>
            <![CDATA[<h1>Websterm API Documentation</h1>]]></doctitle>
   </javadoc>
</target>
</project>



以上是我对Java开发的一些认识吧,我比较喜欢ANT,我也曾经用过许多IDE,Eclipse, Netbeans, IDEA,但是最后还是ANT最实用,因为不管走到哪里,我都只要把我的项目打个包,一解压,用ANT完成循环就行了,非常方便。如果有什么不妥或者需要说明之处,请大家一定提出高贵意见,谢谢


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-06-13 15:18 
头像

注册: 2007-04-18 11:09
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
留个脚印,经常溜溜。


最后由 ahu_917 编辑于 2009-11-03 15:40,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-06-13 15:39 
头像

注册: 2006-06-27 16:37
帖子: 88
地址: china
送出感谢: 0 次
接收感谢: 0 次
ant我以前一直用,不过现在已经基本被maven所代替了,不过我的linux上还是都安装的。
其实大多数JAVA程序只要配个环境变量就可以使用了,至于怎么使用建议大家还是学会看doc


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-06-22 14:01 
头像

注册: 2007-03-01 20:46
帖子: 2393
地址: 湖南长沙
送出感谢: 0 次
接收感谢: 0 次
seaway 写道:
ant我以前一直用,不过现在已经基本被maven所代替了,不过我的linux上还是都安装的。
其实大多数JAVA程序只要配个环境变量就可以使用了,至于怎么使用建议大家还是学会看doc

恩,MAVEN我也用过,但还是觉得别扭,呵呵,个人习惯不同吧~~
喜欢Java的话希望能多交流,我的MSN和GMAIL资料里都有的


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于Java中ANT的配置和使用
帖子发表于 : 2009-09-19 9:11 
头像

注册: 2008-06-05 12:39
帖子: 32
送出感谢: 0 次
接收感谢: 0 次
后来者居上,哈哈 :em05


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于Java中ANT的配置和使用
帖子发表于 : 2011-11-28 14:08 

注册: 2008-11-03 16:06
帖子: 18
送出感谢: 0 次
接收感谢: 2
求助:root 用户配置的ant ,普通用户使用 ant -version 显示没有安装


_________________
我的个人博客


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关于Java中ANT的配置和使用
帖子发表于 : 2012-02-18 11:34 

注册: 2012-02-18 11:31
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
请问关于ant中的copy task,涉及到权限问题该怎么处理,比方说部署war;
如果sudo ant的话部署不正常,难道要用ant的exec然后sudo cp么。。。。。
求教~~


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 关于Java中ANT的配置和使用
帖子发表于 : 2012-02-18 14:54 

注册: 2012-02-18 11:31
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
ybtsdst 写道:
请问关于ant中的copy task,涉及到权限问题该怎么处理,比方说部署war;
如果sudo ant的话部署不正常,难道要用ant的exec然后sudo cp么。。。。。
求教~~

自己解决了,还是从权限角度出发,将目录的owner修改为当前用户~~


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 关于Java中ANT的配置和使用
帖子发表于 : 2014-08-07 15:48 
头像

注册: 2008-12-23 16:38
帖子: 129
送出感谢: 25
接收感谢: 0 次
收藏一下 :em11 :em11 :em11


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译