Ant构件工具|配置信息|批处理命令|克隆

 
 
2006-8-21 知识总结
l          Ant 构件工具
1 、配置 path:
path 等于 apache-ant- 1.6.5 bin 文件所在目录下。如 C:/apache-ant-1.6.5/bin
2 、配置 JAVA_HOME
  因为 ant.bat 批处理程序中已经有 JAVA_HOME 的配置,但是路径不一定对,所以配置 JAVA_HOME 的配置要看具体情况,可以不配置,未免出错要求配置。
JAVA_HOME 等于在 java/jdk/lib 目录下,主要是在 ant 运行时去调用 java 中(如 tools.jar 包中类)的类去实现。如可设置为: C:/Program Files/Java/jdk1.5.0_01 或者 C:/Program Files/Java/jdk1.5.0_01/lib  (可能是因为系统将自动去寻找 jdk1.5.0_01 下的 lib 文件下的 java 类包)
3 .批处理中的部分命令:如 @echo off 他下面的命令不显示 , echo 命令打印并执行命令 .
4 .配置 build.xml
其中常用的格式为:
<?xml version="1.0" encoding="gb2312" ?>      <!-- 资源文件 -->
<”default” 属性值指明该工程运行的项目,该属性可以不指定 >
<project name="Lesson1" default="run" >         
<property file="build.properties"/>          <!-- 建目录 -->
                <target name="init">
                               <mkdir dir="class" />
                </target>
<!-- 编译文件, srcdir 设置源文件目录, destdir 设置生成 .class 目标文件目录 -->
<target name="compile" depends="init" >
                                <javac srcdir="${dir.src}" destdir="${dir.class}" />  
                </target>
                      <!-- 运行文件 ,depends 设置本操作依靠于 compile 操作,即运行到本操作时将根据 depends 属性跳转到先去执行 comlile 操作,等 complie 完成后才执行本操作,把 complie 作为本操作运行的前提, classpath 属性设置运行文件所在目录 >
                <target name="run" depends="compile" >
                                 <java classname="Hello" classpath="${dir.class}" />
                </target>
                <!-- 删除文件 -->
                <target name="delete" depends="run">
                            <delete includeEmptyDirs="true">
                                        <fileset dir="${dir.class}" includes="*/**"/>
                      </delete>
                </target>
</project>
其中的每个目标操作其实都对应着一个 java 类,所以 ant 的可扩展性很强,可以自己编写一个类让 ant 去调用从而实现自己想让实现的功能。其中的类明那些变量应该用 build.properties 文件配置,这样可扩展性强。其他属性请参考 ant 帮助。
5 、补充: Properties 的实现与作用:
   a. 实现:可在当前目录下创建一个 build.properties 的文件 ( 扩展名为 .properties) ,在此文件中添加值(如: dir.class = class . 然后在当前 build.xml 文件中创建一 <property></property> 标签对,在其中设置 file 属性,值设置为目录下的 build.properties (如不同一目录下将在前添加相对路径)。
   b. 作用:当在大量处理相同路径下的文件时,可通过改动 build.properties 中的值从而改变所有在  build.xml 中的所有相关的项。
例如:
built.porperties 中对应值为:
       dir.src = src
       dir.class = class    ( 其中, src 代表源文件夹、 class 代表目标文件夹 )
built.xml 文件对应代码如下:
<project name = "testAnt" default = "run">
            <property file = "build.properties" />    <!-- properties built.xml 中的引用 -->
            <target name = "make">
                      <mkdir dir = "class"></mkdir>
            </target>
            <target name = "complie">
           < 固定格式: ${} ,在 {} 中添加 built.porperties 中的值 >
                      <javac srcdir = "${dir.src}" destdir = "${dir.class}" />
            </target>
            <target name = "run" depends = "complie">
                      <java classname = "Hello" classpath = "class" />
            </target>
</project>
 
6 include exclude 的运用:
     例如:
    <classpath>
      <pathelement path="${classpath}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="${build.dir}">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>
      </dirset>
      <filelist refid="third-party_jars"/>
     </classpath>
说明:
a.        name="**/*.jar" 表示:
当前目录下以及所有“子子孙孙”目录下以“ .jar ”为扩展名的所有文件。其中“ ** 当前目录下以及所有“子子孙孙”目录下的文件,“ *.jar ”表示所有以“ .jar ”为扩展名的文件,
b.        name="apps/**/*Test*” 表示:
apps 所有“子子孙孙”目录下的文件名中包含“ Test ”的的所有文件。其中“ ** ”表示 apps 的所有“子子孙孙”目录下的文件。
 
l          专家模式:谁最了解,持有数据,就让谁处理该事件,这就叫专家模式。
例如:
a. 电视和关电视的人?
——由于是电视清楚关电视的操作,了解关电视的过程,因此电视去关而不是人去关,人只是发出了一个关电视的动作,具体怎么进行关电视的操作而是有电视去实施的。
b. 票据和售货员?
——由于票据持有所有有关数据,因此在统计总额时是又票据去进行数据处理,而不是人,人只是可能发出统计的命令。
c. 门与关门的人?
——由于门自己最清楚自己的构造,怎么样才能关上门,因此是又门去处理关门这一事件,而不是人,人只可能发出关门的命令,而具体怎么关是有门去实施。
 
l          类复制的应用(克隆):
          用于保证程序的稳定性,例如如果在多线程中 2 个线程同时超做一个对象的时候为了保证结果的稳定,所以可以考虑复制对象,当然也可以用 syschronized 保证线程同步。
    例如:
        class Student
        {
                   private String name;
                   private int age;
                   private Thread t;
                   protect Object clone() throws CloneNotSupportedException
                   {
                            Student another = new Student();
                            another.name = this.name;
                            another.age = age;
}
         }
 
学习感言:
    今天是忙碌的一天,思考没停止过,手没停止过,现在已经快凌晨一点了,一会也该洗澡睡觉了。
    今天是充实的一天,学习了不少新知识,让我经历从不知道 Ant 构架工具到了解和会使用的过程,最后能自己发现问题,解决问题和总结问题。
    这次学习班中很厉害的同学很多,他们都成为了我的好朋友,他们都很热情和主动的帮助我解决疑难,相信在张老师的教学中和这些好朋友的帮助下,我很有信心学习好。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值