论坛首页 入门技术论坛

ant文件简要介绍

浏览 1940 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-07-03  
  最近用ant的命令比较多,所花了些时间试着自己写build文件,其中牵涉的元素我就不多说,因为相关的介绍google一下很多,我这里把xml文件贴出来方便大家作为模板使用,我的工程文件是这样的有个src目录,其下面放了相关的java文件,另外一个lib目录,放置了用户自定的jar包等,在此做了个打包HelloWorld程序的ant 文件,如下程序片段:
import java.io.IOException;
/**
*HelloWorld
*/
public class HelloWorld{

	public static void main(String[] args)throws IOException{
		System.out.println("HelloWorld!");
	}
}

针对这个java类进行打包的ant file如下:
<?xml version="1.0" encoding="UTF-8"?>
<project default="build" basedir=".">
    <property name="appname" value="HelloWorld" />
    <property name="base" value="." />
    <property name="src.dir" value="${base}\src" />
    <property name="lib.dir"  value="${base}\lib" />
    <property name="dist.dir" value="${base}\dist" />
    <property name="classes.dir" value="${base}\classes" /> 
    <!--初始化基本信息如路径等-->  
    <target name="init">
		<mkdir dir="${base}\classes"/>
		<mkdir dir="${base}\dist"/>
		<echo message="create folder successful"/>
    </target>
    <!--将src.dir下的所有java文件进行编译-->
    <target name="build" depends="init">
        <javac srcdir="${src.dir}" destdir="${classes.dir}">
            <include name="**/*.java" />
        </javac>        
<!--将${classes}目录及${src.dir}目录下的文件都打包成test.jar其中所有Test.class除外-->
	  <jar destfile="${dist.dir}/test.jar">
		  <fileset dir="${classes.dir}" excludes="**/Test.class" />
		  <!-- 指定Main-class-->
		  <manifest>
				<attribute name="Main-class" value="HelloWorld"/>
		  </manifest>
	  </jar>
	 <!--将lib.dir下的所有class及jar文件copy到dist.dir目录下-->
		<copy todir="${dist.dir}" overwrite="true" flatten="true">	
			<fileset dir="${lib.dir}">
				<include name="*.class" />
				<include name="*.jar" />	
			</fileset>
		</copy>
    </target>
    <!--运行一个类,类名为HelloWorld-->
    <target name="run" depends="build">
        <java classname="HelloWorld">
            <classpath>
                <pathelement path="${classes.dir}"/>
            </classpath>
        </java>
    </target>
    <!--清除classes.dir及dist.dir下的所有内容-->
     <target name="clean" depends="init">
        <delete includeEmptyDirs="false">
            <fileset dir="${classes.dir}" />
            <fileset dir="${dist.dir}" />            
        </delete>
    </target> 
</project>

运行结果如下:
E:\anttest>ant
Buildfile: build.xml

init:
    [mkdir] Created dir: E:\anttest\classes
    [mkdir] Created dir: E:\anttest\dist
     [echo] create folder successful

build:
    [javac] Compiling 1 source file to E:\anttest\classes
      [jar] Building jar: E:\anttest\dist\test.jar
     [copy] Copying 2 files to E:\anttest\dist

BUILD SUCCESSFUL
Total time: 1 second
   发表时间:2008-07-15  
  一个通过jar来启动的build文件
<?xml version="1.0" encoding="UTF-8"?>
<project default="run" basedir="." name="Demo">
	<property name="src.dir"     value="src"/>
	    <property name="build.dir"   value="build"/>
	    <property name="classes.dir" value="${build.dir}/classes"/>
	    <property name="jar.dir"     value="${build.dir}/jar"/>
	    <property name="main-class"  value="com.chris.demo.TestJFrame"/>
    	<property name="lib.dir"     value="lib"/>
	    <path id="classpath">
	        <fileset dir="${lib.dir}" includes="**/*.jar"/>
	    </path>

	    <target name="clean">
	        <delete dir="${build.dir}"/>
	    </target>
	    <target name="compile">
	        <mkdir dir="${classes.dir}"/>
	        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
	    </target>
	    <target name="jar" depends="compile">
	        <mkdir dir="${jar.dir}"/>
	        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
	            <manifest>
	                <attribute name="Main-Class" value="${main-class}"/>
	            </manifest>
	        </jar>
	    </target>
	    <target name="run" depends="jar">
	        <java fork="true" classname="${main-class}">
	            <classpath>
	                <path refid="classpath"/>
	                <path location="${jar.dir}/${ant.project.name}.jar"/>
	            </classpath>
	        </java>
	    </target>
	    <target name="clean-build" depends="clean,jar"/>
	    <target name="main" depends="clean,run"/>
</project>

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics