现在的位置: 首页 > 综合 > 正文

ant入门程序

2014年10月05日 ⁄ 综合 ⁄ 共 2624字 ⁄ 字号 评论关闭

一. ant简介

Ant是apache的一个核心项目, 它的作用是项目自动化构建, 因为它内置了Javac、Java、创建目录、复制文件等功能, 

直接运行build.xml文件就可以编译我们的项目。


二. ant配置

1. 新建环境变量ANT_HOME: ant的解压目录

2. 在path中配置:%ANT_HOME%/bin;

3. 在命令行中输入ant, 如果出现 Buildfile:build.xml does not exist! Build failed 说明配置成功


三. ant入门程序

build.xml

<?xml version="1.0" encoding="GBK"?>
<project default="targetname">
    <target name="name"></target>
</project>

project是生成文件的根元素, 表示一个工程

target是project的子元素, 表示一个任务, 一个project中可以定义多个target元素, 表示多个任务

default属性表示默认执行的target, 如果ant命令没有指定target, 则执行default的target

ant targetName则会执行此target, 而忽略default设置的target

四. ant编译Java项目流程

1. 创建文件夹

build -> 所有文件信息都保存在这个文件夹中

         -- src -> 所有源码信息保存在这个文件夹中

         -- classes -> 编译好的所有文件保存在这个文件夹中

         -- dist -> 编译好的jar文件保存在这个文件夹中 

2. 将src中文件拷贝到build/src

3. 编译源码

4. 将源码打包成jar

5. 直接运行程序

<?xml version="1.0" encoding="UTF-8"?>
<project default="execute">
	<!-- 使用属性定义相应路径的时候, 使用location(会根据操作系统转换路径), 如果不是路径就使用value -->
	<property name="build.dir" location="build" />
	<property name="build.classes" location="${build.dir}/classes" />
	<property name="build.src" location="${build.dir}/src" />
	<property name="build.lib.dir" location="${build.dir}/dist" />
	
	<!-- 
		如果属性太多, 可以将属性放在一个外部文件中定义, 在本文件中引用
		特别注意: 如果是路径就不建议在外部文件中定义, 因为此时就不会设置location的值
	 -->
	<property file="build.properties" />
	
	<!-- 把环境变量中的参数存放在env这个变量中 -->
	<property environment="env" />
	
    <target name="test">
    	<echo>${ant.home}</echo>
    	<echo>${ant.version}</echo>
    	<echo>${env.CLASSPATH}}</echo>
    </target>

	<!-- 
		fileset可以设定一组文件集来进行操作, dir指明文件集进行选择的路径
	            通过id可以指定这个文件的名称, 下面使用的时候可以直接引入
	    include和exclude可以设定包含和排除文件的范围 
	-->
	<fileset id="src.path" dir="src">
		<include name="**/*.*" />
		<exclude name="**/Test*.java"/>
	</fileset>
	
	<target name="init">
		<delete dir="${build.dir}" />
		<mkdir dir="${build.dir}" />
		<mkdir dir="${build.classes}" />
		<mkdir dir="${build.src}" />
		<mkdir dir="${build.lib.dir}" />
	</target>
		
	<target name="copySrc" depends="init">
		<copy todir="${build.src}">
			<fileset refid="src.path"></fileset>
		</copy>
	</target>
	
	<target name="compile" depends="init">
		<javac destdir="${build.classes}" srcdir="src"></javac>
	</target>
	
	<target name="jar" depends="compile">
		<jar destfile="${build.lib.dir}/${jar.name}" basedir="${build.classes}">
			<manifest>
				<attribute name="Main-Class" value="${execute.class}"/>
				<attribute name="Build-By" value="zhangdongping"/>
			</manifest>
		</jar>
	</target>
	
	<target name="execute" depends="jar, copySrc">
		<echo>基于类路径下的classname来完成执行</echo>
		<java classname="${execute.class}" classpath="${build.classes}">
			<arg value="zhangsan" />
		</java>
		
		<echo>基于jar文件执行</echo>
		<java jar="${build.lib.dir}/${jar.name}" fork="true">
			<arg value="liming" />
		</java>
	</target>
</project>

build.properties

execute.class = com.zdp.test.HelloWorld
jar.name = hello.jar

HelloWorld.java

package com.zdp.test;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("hello " + args[0]);
	}
}

抱歉!评论已关闭.