我的代码位置:
laolang@laolang:~/code/ant/li$ tree
.
├── build.xml
└── src
└── com
└── laolang
└── hello
└── HelloWorld.java
4 directories, 2 files
laolang@laolang:~/code/ant/li$
HelloWorld.java//
package com.laolang.hello;
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] argv){
Scanner input = new Scanner(System.in);
System.out.println("input two integer numbers:");
int a = input.nextInt();
int b = input.nextInt();
System.out.println(a + " + " + b + " = " + (a + b) );
System.out.println("Hello World");
}
}
build.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义生成文件的project根元素,默认的target为空 -->
<project name="HelloWorld" default="" basedir=".">
<!-- 定义三个简单属性 -->
<property name="src" value="src" />
<property name="classes" value="classes" />
<property name="dest" value="dest" />
<!-- 定义一组文件和目录集 -->
<path id="classpath" >
<pathelement path="${classes}" />
</path>
<!-- 定义 help target ,用于输出该生成文件的帮助信息 -->
<target name="help" description="打印帮助信息">
<echo>help 打印此帮助信息</echo>
<echo>compile 编译Java源文件</echo>
<echo>run 运行程序</echo>
<echo>build 打包JAR包</echo>
<echo>clean 清除所有编译生成的文件</echo>
</target>
<!-- 定义 compile target,用于编译Java源文件 -->
<target name="compile" description="编译">
<!-- 先删除classes属性所代表的文件夹 -->
<delete dir="${classes}" />
<!-- 创建classes属性所代表的文件夹 -->
<mkdir dir="${classes}" />
<!-- 编译Java文件,编译后的class文件放到classes属性所代表的文件夹内 -->
<javac destdir="${classes}" debug="true" includeantruntime="yes"
deprecation="false" optimize="false" failonerror="true">
<!-- 指定需要编译的Java文件所在的位置 -->
<src path="${src}" />
<!-- 指定编译Java文件所需要的第胡方类库所在的位置 -->
<classpath refid="classpath" />
</javac>
</target>
<!-- 定义 run target ,用于运行Java源文件,运行之前先执行 compile target -->
<target name="run" description="运行" >
<!-- 运行com.laolang.hello.HelloWorld类,其中fork属性指定启动另一个JVM来执行java命令 -->
<java classname="com.laolang.hello.HelloWorld" fork="yes" failonerror="true">
<classpath refid="classpath" />
</java>
</target>
<!-- 定义builid target,用于打包JAR文件,运行之前先执行compile target -->
<target name="build" description="打包JAR文件">
<!-- 删除dest属性所代表的文件夹 -->
<delete dir="${dest}" />
<!-- 创建dest属性所代表的文件夹 -->
<mkdir dir="${dest}" />
<!-- 指定将classes属性所代表的文件夹下的所有*.class文件都打开到app.jar文件中 -->
<jar destfile="${dest}/app.jar" basedir="${classes}" includes="**/*.class">
<!-- 为JAR包的清单文件添加属性 -->
<manifest>
<attribute name="Main-Class" value="com.laolang.hello.HelloWorld" />
</manifest>
</jar>
</target>
<!-- 定义 clean target ,用于删除所有编译生成的文件 -->
<target name="clean" description="删除编译生成的文件">
<!-- 删除两个目录,目录下的文件也一并删除 -->
<delete dir="${classes}" />
<delete dir="${dest}" />
</target>
</project>
运行效果:
laolang@laolang:~/code/ant/li$ l #未运行ant之前的文件列表
总用量 8.0K
4.0K -rw-rw-r-- 1 laolang laolang 2.9K 11月 21 15:20 build.xml
4.0K drwxrwxr-x 3 laolang laolang 4.0K 11月 21 14:19 src/
laolang@laolang:~/code/ant/li$ tree #文件树
.
├── build.xml
└── src
└── com
└── laolang
└── hello
└── HelloWorld.java
4 directories, 2 files
laolang@laolang:~/code/ant/li$ ant help #此ant帮助列表
Buildfile: /home/laolang/code/ant/li/build.xml
help:
[echo] help 打印此帮助信息
[echo] compile 编译Java源文件
[echo] run 运行程序
[echo] build 打包JAR包
[echo] clean 清除所有编译生成的文件
BUILD SUCCESSFUL
Total time: 0 seconds
laolang@laolang:~/code/ant/li$ ant compile # 编译
Buildfile: /home/laolang/code/ant/li/build.xml
compile:
[mkdir] Created dir: /home/laolang/code/ant/li/classes
[javac] Compiling 1 source file to /home/laolang/code/ant/li/classes
BUILD SUCCESSFUL
Total time: 1 second
laolang@laolang:~/code/ant/li$ ant run # 运行
Buildfile: /home/laolang/code/ant/li/build.xml
run:
[java] input two integer numbers:
3 4
[java] 3 + 4 = 7
[java] Hello World
BUILD SUCCESSFUL
Total time: 2 seconds
laolang@laolang:~/code/ant/li$ ant build # 打包JAR文件
Buildfile: /home/laolang/code/ant/li/build.xml
build:
[mkdir] Created dir: /home/laolang/code/ant/li/dest
[jar] Building jar: /home/laolang/code/ant/li/dest/app.jar
BUILD SUCCESSFUL
Total time: 0 seconds
laolang@laolang:~/code/ant/li$ java -jar dest/app.jar # 运行JAR文件
input two integer numbers:
3 4
3 + 4 = 7
Hello World
laolang@laolang:~/code/ant/li$ tree
.
├── build.xml
├── classes
│ └── com
│ └── laolang
│ └── hello
│ └── HelloWorld.class
├── dest
│ └── app.jar
└── src
└── com
└── laolang
└── hello
└── HelloWorld.java
9 directories, 4 files
laolang@laolang:~/code/ant/li$