apache ant模拟考试题

以下是我为了应对公司apache ant基础考试,整理和总结的一些考试题,也算是对ant基础知识的一个整理,如果答案有错误欢迎指出。

1.在windows上搭建Ant环境,成功后查看版本号
答案:
(1)安装jdk,配置环境变量
(2)安装ant,配置环境变量,添加ANT_HOME,在path中加入%ANT_HOME%\bin;
通过 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.拷贝a目录所有内容到b目录
<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.在build.xml写以下的任务
  a.写一个HelloWorld程序
ant createHelloJava
  b.编译
ant compile
  c.打成jar包
ant jar
  d.放在应该的地方
ant put-jar
  e.运行
ant run
  f.把jar包上传到linux
ant scp-upload2server
 
答案build.xml:
<?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.post" 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.host}:${server.jarDir}" password="${server.password}" post="${server.post}" trust="true">
            <fileset dir="${local.jarDir}">
                <include name="**/*.jar"/>
            </fileset>
        </scp>
    </target>
</project>
 
8.内置任务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>

猜你喜欢

转载自www.cnblogs.com/xhj123/p/9827392.html