zoukankan      html  css  js  c++  java
  • Ant基础知识2

    Ant:
    1.在windows上搭建Ant环境,成功后查看版本号
    答案:
    (1)安装jdk,配置环境变量
    (2)安装ant,配置环境变量,添加ANT_HOME,在path中加入%ANT_HOME%in;
    通过 ant -version查看ant版本号
     
    2.ant与maven的区别
    答案:
    (1) Maven约定了目录结构,而Ant没有
    (2) Maven是声明式的,用pom.xml文件;而Ant是程序式的,构建过程需要自定义,用build.xml
    (3) Maven是有生命周期的,而Ant没有。
    (4) Maven内置依赖管理和Respository来实现依赖的管理和统一存储;而Ant没有。Maven第一次install的时候会把依赖的jar包和构件从远程库(又叫中央库,http://repo1.maven.org/maven2,统一存储maven可以解释的文件资源)下载到本地库(先从本地仓库找)。maven还可以管理传递依赖。
    (5) Maven配置比较简单,有很多的约定/规范/标准,可以用较少的代码干更多的事;而Ant配置比较麻烦,需要配置整个构建的过程(但Ant配置灵活)。
     
    3.脚本执行结果(看视频,理解里面的内容,应该能答出来)
    Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
     
    4.拷贝b目录所有内容到a目录
    <copy todir="a">
        <fileset dir="b" />
    </copy>
     
    5.删除src目录下,以.class为结尾的文件
    <delete includeEmptyDirs="true">
        <fileset dir="." includes="**/*.class" />
    </delete>
     
    6.使用war任务,创建一个java war文件
    <war warfile="./java.war" webxml="./WEB-INF/web.xml"></war>
     
    7.使用tstamp输出当前时间
        <target name="printnow" description="print now time">
            <tstamp>
                <format property="timestamp" pattern="yyyy-MM-dd HH:mm:ss"/>
            </tstamp>
            <echo>${timestamp}</echo>
        </target>
     
    8.demo
      a.写一个HelloWorld程序
    ant createHelloJava
      b.编译
    ant compile
      c.打成jar包
    ant jar
      d.放在应该的地方
    ant put-jar
      e.运行
    ant run
      f.把jar包上传到linux
    ant scp-upload2server
     
    <?xml version="1.0"?>
    <project name="a-20181021" default="printnow" basedir=".">
        <property name="base.dir" value="." />
        <property name="src.dir" value="./src" />
        <property name="default.package.name" value="com.xhj.ant"/>
        <property name="default.path.name" value="com/xhj/ant"/>
        
        <property name="build.dir" value="./build" />
        <property name="build.classes" value="${build.dir}/classes" />
    
        <property name="server.username" value="root" />
        <property name="server.password" value="123456" />
        <property name="server.host" value="127.0.0.1" />
        <property name="server.jarDir" value="/home/root/build" />
        <property name="server.port" value="22" />
        <property name="local.jarDir" value="./build" />
        
        <property name="jar.name" value="hello-1.0"/>
        
        <target name="createHelloJava">
            <mkdir dir="${src.dir}/${default.path.name}"/>
            <echo file="${src.dir}/${default.path.name}/Hello.java">package ${default.package.name};
    public class Hello{
        public static void main(String[] args){
            String str = "hello!";
            System.out.println(str);
        }
    }
            </echo>
        </target>
        
        <target name="prepare">
            <mkdir dir="${build.dir}" />
            <mkdir dir="${build.classes}" />
            <!-- <mkdir dir="${build.lib}" /> -->
        </target>    
    
        <target name="compile" depends="prepare,createHelloJava" description="Compiles all source code.">
            <javac srcdir="${src.dir}" destdir="${build.classes}" includeAntRuntime="false">
            </javac>
        </target>
        
        <target name="run" depends="compile">
            <java classname="${default.package.name}.Hello" >
                <classpath path="${build.classes}"/>
            </java>
        </target>
    
        <target name="jar" depends="compile" description="Generates jar.">
            <!-- Exclude unit tests from the final JAR file -->
            <jar jarfile="./${jar.name}.jar" basedir="${build.classes}" excludes="**/*Test.class,**/Test*.class"/>
        </target>
    
        <target name="put-jar">
            <move file="./${jar.name}.jar" todir="${build.dir}"/>
        </target>
    
        <target name="scp-upload2server" description="print now time">
            <scp todir="${server.username}:${server.password}@${server.host}:${server.jarDir}">
                <fileset dir="${local.jarDir}">
                    <include name="**/*.jar"/>
                </fileset>
            </scp>
        </target>
    </project>
     
    9.内置任务copy
    copy任务用来给指定的文件或者目录结构创建一份拷贝,并将其放置在指定目录中
    例:<copy file="文件名" tofile="文件名" />     // 重命名  ,拷贝文件内容
        <copy file="文件名" todir="目录" />        // copy文件到
        <target name="copydir">
            <copy todir="copy">
                <fileset dir="src">
                    <include name="**/*.*"/>
                    <include name="**/*" />
                    <include name="*/*" />
                    <include name="/*.*" />
                    <exclude name="*.svn/" />
                </fileset>
            </copy>
        </target>
    拷贝单个文件:<copy file="myfile.txt" tofile="mycopy.txt" />
    拷贝单个文件到指定目录下:<copy file="myfile.txt" todir="../some/other/dir">
    拷贝一个目录到另外的目录:
    <copy todir="../new/dir">
        <fileset dir="src_dir" />
    </copy>
    拷贝一批文件到指定目录下
    <copy todir="../dest/dir">
        <fileset dir="src_dir">
            <include name="**/*.java" />
            <exclude name="**/Test.java" />
        </fileset>
    </copy>
    <copy todir="../dest/dir">
        <fileset dir="src_dir" excludes="**/*.java"/>
    </copy>
  • 相关阅读:
    5星|施展《枢纽》(上):中国历史就是中原跟草原、西域、雪域、西南、海洋的互动史
    乔布斯在位时,库克实质上已经在做CEO的工作了:3星|《蒂姆·库克传》
    3星|张维迎《企业家精神与中国经济》:逻辑不够严谨,有陷入锤子模式的嫌疑
    4星|《喜鹊谋杀案》:侦探小说手稿也是罪案工具和破案线索【严重剧透】
    近年读了1008本书,挑出32本5星好书
    2019左其盛好书榜,没见过更好的榜单(截至6月30日)
    他们怎么能如此丧尽天良:3星|《天生恶魔?:纽伦堡审判与罗夏墨迹测验》
    原始部落与现代社会成员的熟人数量都不超过邓巴数:3星|邓巴《社群的进化》
    C#文件或文件夹压缩和解压
    HttpWebRequest Timeout
  • 原文地址:https://www.cnblogs.com/xhj123/p/9863638.html
Copyright © 2011-2022 走看看