将一个简单的类(Sample)进行编译、打包、运行(传参数)。
java源文件:Sample.java
package powerwind;
import javax.swing.*;
public class Sample {
public static void main(String[] args) throws Exception {
if (args.length > 0)
JOptionPane.showMessageDialog(null, args[0]);
else
JOptionPane.showMessageDialog(null, "HelloWorld");
}
}
ant文件:build.xml
注意:encoding="GBK" 设置后才可以有中文注释
xml version="1.0" encoding="GBK" ?>
-- ===================================== -->
-- 周健兴 2006/10/18 -->
-- ===================================== -->
<project name="sample" default="run" basedir=".">
<description>用于学习的简单ant工程文件description>
--属性设置-->
<property environment="env" />
<property file="build.properties" />
<property name="src.dir" value="${basedir}/src" />
<property name="java.lib.dir" value="${env.JAVA_HOME}/lib" />
<property name="build.dir" value="${basedir}/build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="dist.dir" value="${basedir}/dist" />
-- 基本编译路径设置 -->
<path id="compile.classpath">
<fileset dir="${java.lib.dir}">
<include name="tools.jar" />
fileset>
path>
-- 运行路径设置 -->
<path id="run.classpath">
<path refid="compile.classpath" />
<pathelement location="${classes.dir}" />
path>
-- 排除java源文件的模式集 -->
<patternset id="no.java">
<exclude name="**/*.java" />
patternset>
-- 初始化,建立目录,复制文件 -->
<target name="init" description="初始化,建立目录,复制文件">
<mkdir dir="${classes.dir}" />
<mkdir dir="${dist.dir}" />
<copy todir="${classes.dir}">
<fileset dir="${src.dir}">
<patternset refid="no.java" />
fileset>
copy>
target>
-- 清理,删除临时目录 -->
<target name="clean" description="清理,删除临时目录">
<delete dir="${build.dir}" />
<delete dir="${dist.dir}" />
<echo level="info">清理完毕echo>
target>
-- 编译源文件-->
<target name="compile" depends="init" description="编译源文件">
<javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.5" target="1.5">
<classpath refid="compile.classpath" />
javac>
target>
-- 打包类文件 -->
<target name="jar" depends="compile" description="打包类文件">
<jar jarfile="${dist.dir}/${jar.file}" manifest="${src.dir}/${manifest.file}">
<fileset dir="${classes.dir}" includes="**/*.*" />
jar>
target>
-- 从打包后jar的文件里运行 -->
<target name="runjar" depends="jar" description="运行jar">
<java jar="${dist.dir}/${jar.file}" fork="yes" dir="${basedir}" />
target>
-- 运行 -->
<target name="run" depends="compile" description="运行">
<java classname="powerwind.Sample" fork="yes" dir="${basedir}">
<classpath refid="run.classpath" />
<arg line="${param.msg}" />
java>
target>
project>
属性文件:build.properties
manifest.file = manifest.txt
jar.file = sample.jar
列表文件:manifest.txt (最后的回车不能少)
Main-Class: powerwind.Sample
文件结构:
E:\JAVA\SAMPLE
│ build.properties
│ build.xml
│
└─src
│ manifest.txt
│
└─powerwind
Sample.java
可以不事先创建manifest.txt 文件,而在build.xml文件中加入一个任务
-- 创建清单文件 -->
<target name="create.manifest" description="创建清单文件">
<manifest file="${src.dir}/${manifest.file}">
<attribute name="Built-By" value="${user.name}" />
<attribute name="Main-Class" value="powerwind.Sample" />
manifest>
target>
-- 这里的依赖关系加上create.manifest -->
<target name="jar" depends="compile,create.manifest" …>
同样,如果全部属性在build.xml文件中设置,也不用build.properties这个属性文件了。
但是,如果属性较多,放在其它文件中是比较方便的。属性文件可以用XML文件来替代
props.xml 文件
<properties>
<manifest>
<file>manifest.txtfile>
manifest>
<jar>
<file>sample.jarfile>
jar>
properties>
这样,将原来的${manifest.file}改成${properties.manifest.file} ,${jar.file} 改成${properties.jar.file}即可。
当然,加载属性文件的<property file="build.properties" />也要改成<xmlproperty file="props.xml"/>
切换到目录E:\java\sample>,输入 ant -Dparam.msg=你好啊!
如果输入 ant –projecthelp 会得到各个任务的描述