http://hi.baidu.com/yinjicheng1987/item/f0909a15dcd1f7fdddeecabe
.
├── build.xml
└── src
└── HelloWorld.java
事实上这个package是什么并没有关系,你也不必在当前文件夹下建立这样的子目录/myant./demo/。这个package会在编译以后在我们定义的classes文件夹下自动编译出目录来。
package myant.demo;
public class HelloWorld
{
public static void main( String args[] )
{
System.out.println("Hello world. ");
}
}
mkdir是建立目录,
[xxx@xxxsrc]$ ant
Buildfile: /home/xxx/test/src/build.xml
init:
[mkdir] Created dir: /home/xxx/test/src/classes
compile:
[javac] /home/xxx/test/src/build.xml:17: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /home/xxx/test/src/classes
build:
[jar] Building jar: /home/xxx/test/src/hello.jar
run:
[java] Hello world.
BUILD SUCCESSFUL
Total time: 0 seconds
.
├── build.xml
├── classes
│ └── myant
│ └── demo
│ └── HelloWorld.class
├── hello.jar
└── src
└── HelloWorld.java
http://www.cnblogs.com/clarkchen/archive/2011/03/10/1980194.html
Ant的构建文件当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。一般做法是放在项目顶层目录中,这样可以保持项目的简洁和清晰。下面是一个典型的项目层次结构。
(1) src存放文件。
(2) class存放编译后的文件。
(3) lib存放第三方JAR包。
(4) dist存放打包,发布以后的代码。
Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。每个目标中可以定义多个任务,目标中还定义了所要执行的任务序列。Ant在构建目标时必须调用所定义的任务。任务定义了Ant实际执行的命令。Ant中的任务可以为3类。
(1) 核心任务。核心任务是Ant自带的任务。
(2) 可选任务。可选任务实来自第三方的任务,因此需要一个附加的JAR文件。
(3) 用户自定义的任务。用户自定义的任务实用户自己开发的任务。
举例如下:
通常,src存放Java源文件,classes存放编译后的class文件,lib存放编译和运行用到的所有jar文件,web存放JSP等web文件,dist存放打包后的jar文件,doc存放API文档。
xml version = "1.0" ?>
< project name = "Hello world" default = "doc" >
< property name = "src.dir" value = "src" />
< property name = "report.dir" value = "report" />
< property name = "classes.dir" value = "classes" />
< property name = "lib.dir" value = "lib" />
< property name = "dist.dir" value = "dist" />
< property name = "doc.dir" value = "doc" />
< path id = "master-classpath" >
< fileset file = "${lib.dir}/*.jar" />
< pathelement path = "${classes.dir}" />
path >
< target name = "init" >
target >
< target name = "compile" depends = "init" description = "compile the source files" >
< mkdir dir = "${classes.dir}" />
< javac srcdir = "${src.dir}" destdir = "${classes.dir}" target = "1.4" >
< classpath refid = "master-classpath" />
javac >
target >
< target name = "test" depends = "compile" description = "run junit test" >
< mkdir dir = "${report.dir}" />
< junit printsummary = "on"
haltonfailure = "false"
failureproperty = "tests.failed"
showoutput = "true" >
< classpath refid = "master-classpath" />
< formatter type = "plain" />
< batchtest todir = "${report.dir}" >
< fileset dir = "${classes.dir}" >
< include name = "**/*Test.*" />
fileset >
batchtest >
junit >
< fail if = "tests.failed" >
***********************************************************
**** One or more tests failed! Check the output ... ****
***********************************************************
fail >
target >
< target name = "pack" depends = "test" description = "make .jar file" >
< mkdir dir = "${dist.dir}" />
< jar destfile = "${dist.dir}/hello.jar" basedir = "${classes.dir}" >
< exclude name = "**/*Test.*" />
< exclude name = "**/Test*.*" />
jar >
target >
< target name = "doc" depends = "pack" description = "create api doc" >
< mkdir dir = "${doc.dir}" />
< javadoc destdir = "${doc.dir}"
author = "true"
version = "true"
use = "true"
windowtitle = "Test API" >
< packageset dir = "${src.dir}" defaultexcludes = "yes" >
< include name = "example/**" />
packageset >
< doctitle > Hello, test]]> doctitle >
< bottom > All Rights Reserved.]]> bottom >
< tag name = "todo" scope = "all" description = "To do:" />
javadoc >
target >
project >
以上xml依次定义了init(初始化),compile(编译),test(测试),doc(生成文档),pack(打包)任务,可以作为模板。
http://blog.chinaunix.net/uid-9398085-id-362360.html
就像每个语言都有HelloWorld一样,一个最简单的应用能让人感受一下Ant
package test.ant;
public class HelloWorld
{
public static void main( String args[] )
{
System.out.println("Hello world. ");
}
}
你可以手动的用javac 、copy 、jar、java来完成,但是考虑一下如果你有成百上千个类,在多次调试,部署的时候,一次次的javac 、copy、jar、
java那将是一份辛苦的工作。现在看看ant怎么优雅的完成它们。
要运行ant需要有一个build.xml虽然不一定要叫这个名字,但是建议你这么做,下边就是一个完整的build.xml,然后我们来详细的解释每一句:
build.xml中的第一句话,没有实际的意义
ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。
类似程序中的变量,为什么这么做想一下变量的作用
把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行
做jar包:
运行:
为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中了
为了更多一点的功能体现,又加入了两个target
再次运行,这里显示了如何在一个target里边调用其他的target
好了,解释完成了,下边检验一下你的ant吧
ant build
ant中的每一个任务都可以这样调用ant + target name