[关闭]
@wangwangheng 2015-06-23T07:03:56.000000Z 字数 3993 阅读 2043

Ant

开发工具


1、概述

Ant默认使用build.xml的配置执行

例子:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!--默认执行execute任务 -->
  3. <project default="execute">
  4. <!-- 一个target表示一个任务,name属性指示任务名称 -->
  5. <target name="compile">
  6. <javac srcdir="." destdir="."/>
  7. </target>
  8. <!-- depends表示依赖哪一个任务 -->
  9. <target name="execute" depends="compile">
  10. <java classpath="." classname="HelloWorld"/>
  11. </target>
  12. </project>

2、Ant编译普通Java项目的流程

1、创建文件夹
build:所有的文件信息都保存子这个文件夹中
src:所有的源文件都保存在这个文件夹中
classes:编译好的所有文件都保存在这个文件夹中
dist:编译好的jar文件都保存在这个文件夹中
2、将src文件夹的数据拷贝到build/src目录下
3、编译源文件
4、将源代码打包成为jar包
5、直接运行程序

3、例子1:创建和复制文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project default="copySrc">
  3. <!-- 设定一组文件集来进行操作,dir指定文件集要进行选择的路径,通过id可指定文件集的名称,在使用的时候可以直接通过refid进行引用 -->
  4. <fileset id="src.path" dir="src">
  5. <!-- include 用来指定包含的文件名 -->
  6. <include name="**/*.java"/>
  7. <!-- exclude 用来指定忽略的文件名 -->
  8. <exclude name="**/Test*.java"/>
  9. </fileset>
  10. <target name="init">
  11. <!-- 创建和删除文件 -->
  12. <delete dir="build"></delete>
  13. <mkdir dir="build"/>
  14. <mkdir dir="build/src"/>
  15. <mkdir dir="build/classes"/>
  16. <mkdir dir="build/dest"/>
  17. </target>
  18. <target name="copySrc" depends="init">
  19. <copy todir="build/src">
  20. <fileset refid="src.path"></fileset>
  21. </copy>
  22. </target>
  23. </project>

执行日志:

  1. Buildfile: D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build.xml
  2. init:
  3. [delete] Deleting directory D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build
  4. [mkdir] Created dir: D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build
  5. [mkdir] Created dir: D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build\src
  6. [mkdir] Created dir: D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build\classes
  7. [mkdir] Created dir: D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build\dest
  8. copySrc:
  9. [copy] Copying 1 file to D:\Android\Eclipse_Kepler\Android_Workspace\Workspace2\AntDemo\build\src
  10. BUILD SUCCESSFUL
  11. Total time: 551 milliseconds

4、例子2:编译源代码&打包

  1. <target name="compile" depends="init">
  2. <javac srcdir="src" destdir="build/classes"></javac>
  3. </target>
  4. <target name="jar" depends="compile">
  5. <jar destfile="build/dist/person.jar" basedir="build/classes">
  6. <manifest>
  7. <attribute name="Main-Class" value="com.xinye.antdemo.Main"/>
  8. <attribute name="Build-By" value="Ant"/>
  9. <attribute name="Author" value="王恒"/>
  10. <attribute name="Date" value="2015年6月23日"/>
  11. </manifest>
  12. </jar>
  13. </target>

5、例子3:执行

  1. <target name="run" depends="jar">
  2. <echo>基于classpath的classname执行</echo>
  3. <java classname="com.xinye.antdemo.Main" classpath="build/classes">
  4. <arg value="张三"/>
  5. <arg value="李四"/>
  6. <arg value="王五"/>
  7. <arg value="赵一"/>
  8. </java>
  9. <echo>基于jar包执行</echo>
  10. <java jar="build/dist/person.jar" fork="true">
  11. <arg value="张三"/>
  12. <arg value="111"/>
  13. <arg value="222"/>
  14. <arg value="333"/>
  15. </java>
  16. </target>

6、Ant property

  1. <property name="build.dir" value="build"></property>
  2. <!--
  3. <property name="build.src" value="${build.dir}/src"></property>
  4. <property name="build.classes" value="${build.dir}/classes"></property>
  5. <property name="build.dist" value="${build.dir}/dist"></property>
  6. <property name="build.jar" value="${build.dist}/person.jar"></property>
  7. -->
  8. <!-- location和value的区别与使用:
  9. location指向绝对路径并且路径分隔符使用操作系统的分隔符;
  10. 定义路径的时候一定要使用location而不是value;
  11. 如果不是路径则使用value -->
  12. <property name="build.src" location="${build.dir}/src"></property>
  13. <property name="build.classes" location="${build.dir}/classes"></property>
  14. <property name="build.dist" location="${build.dir}/dist"></property>
  15. <property name="build.jar" location="${build.dist}/person.jar"></property>
  16. <property name="run.classname" value="com.xinye.antdemo.Main"></property>
  17. <!-- 引用属性 -->
  18. <echo>${build.jar}</echo>

build.xml

  1. <!-- 可以把属性定义到properties外部文件中,但是最好不要路径定义出去,因为无法使用location -->
  2. <!--
  3. <property name="run.classname" value="com.xinye.antdemo.Main"></property>
  4. -->
  5. <property file="property.properties"></property>

property.properties

  1. run.classname = com.xinye.antdemo.Main
  1. <!-- 把环境变量的内容导入到env中 -->
  2. <property environment="env"></property>
  3. <echo>${env.JAVA_HOME}</echo>
  4. <echo>${env.CLASSPATH}</echo>
  5. <!-- ant的property -->
  6. <echo>${ant.file}</echo>
  7. <echo>${ant.home}</echo>
  8. <echo>${ant.java.version}</echo>
  9. <echo>${ant.library.dir}</echo>
  10. <echo>${ant.project.default-target}</echo>
  11. <echo>${ant.project.name}</echo>
  12. <echo>${ant.version}</echo>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注