zoukankan      html  css  js  c++  java
  • Ant学习实例

     
     

    Ant学习实例

    1.安装Ant

    先从http://ant.apache.org/下载Ant,解压到任一目录下面,比如E:Lab

    然后设置环境变量

    ANT_HOME=E:Labapache-ant-1.8.2

    path=E:Labapache-ant-1.8.2in

    最后验证是否安装成功

    在dos中输入ant,如果显示

    Buildfile: build.xml does not exist! 
    Build failed

    则安装成功

    2.基础元素

    project元素

    project元素是Ant文件的根元素

    project的属性

    Attribute

    Description

    Required

    name

    项目名称

    No

    default

    当没有指定target时使用的缺省target

    Yes

    basedir

    用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

    No

    target元素

    target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系

    Ant会依照depends属性中target出现的顺序(从左到右)依次执行每个target。然而,要记住的是只要某个target依赖于一个target,后者就会被先执行。

    <target name="A"/>

    <target name="B" depends="A"/>

    <target name="C" depends="B"/>

    <target name="D" depends="C,B,A"/>

    假定我们要执行target D。从它的依赖属性来看,你可能认为先执行C,然后B,最后A被执行。错了,C依赖于B,B依赖于A,所以先执行A,然后B,

    然后C,最后D被执行。

    一个target只能被执行一次,即时有多个target依赖于它。

    若想更好的控制build过程,可以使用if或unless。

    if 属性

        用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。

    unless 属性

        该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。

    property元素

    property元素可看作参量或者参数的定义(即经常使用的变量),project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。

    name是变量的名称 value是变量的值,要用某个变量时使用${name}方式调用。

    3.完整示例

    创建一个java项目

    HelloWorld.java

    package com.test;
    
    public class HelloWorld {
    	public static void main(String[] args) {
    		System.out.println("Hello world");
    	}
    }

    编写build.xml文件

    注:build.xml放在和src同级目录,而不是在src下级目录

    目录结构是

    MyProject <dir> 
    |--lib <dir> --库目录 
    |--classes <dir> --目的文件目录 
    |--src <dir> --源文件目录 
    |--doc <dir> --api文档目录 
    |--build.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <project name="helloWorld" default="run" basedir=".">
    	<property name="src" value="src"/>
    	<property name="dest" value="build/classes"/>
    	<property name="lib" value="lib"></property>
    	<property name="hello_jar" value="hello1.jar"></property>
    	<!--初始化 之前执行删除操作-->
    	<target name="init" depends="clean">
    		<mkdir dir="${dest}"/>
    	</target>
    	<!--编译生成class文件 -->
    	<target name="compile" depends="init">
    		<javac srcdir="${src}" destdir="${dest}"></javac>
    	</target>
    	<!--将编译后的class文件打包-->
    	<target name="build" depends="compile">
    		<mkdir dir="${lib}"/>
    		<jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar>
    	</target>
    	<target name="run" depends="build">
    		<java classname="com.test.HelloWorld" classpath="${lib}/${hello_jar}"></java>
    	</target>
    	<!--删除-->
    	<target name="clean">
    		<delete dir="${dest}"></delete>
    		<delete dir="${lib}"></delete><!-- 是dir 删除目录 ,不是file 删除文件-->
    	</target>
    </project>
    整个过程:初始化----编译----打包---放到相应的位置 

    参考:

    http://www.cnblogs.com/philander/articles/1782254.html

    http://www.cnblogs.com/elric/archive/2011/03/19/1988840.html

  • 相关阅读:
    iOS下JS与OC互相调用(三)--MessageHandler
    在xcode6中使用矢量图(iPhone6置配UI)
    UITextField增加textDidChange回调功能
    IOS开发之格式化日期时间(转)
    ios中将事件同步到系统日历
    xcode中一些便捷用法@literals简写
    JavaScript
    fuzz for test of the Net::HTTP::GET
    perl6 中将 字符串 转成十六进制
    Net::HTTP 一次添加 cookie, body 发送post请求
  • 原文地址:https://www.cnblogs.com/a1280055207/p/3216275.html
Copyright © 2011-2022 走看看