Ant-编译构建(1)-HelloWorld
1、项目目录构成,lib包暂时为空,本次例子未引入第三方包。

2、编写相关的build.xml
<?xml version="1.0" encoding="utf-8"?>
<!--定义生成文件的project根元素,默认的target为空-->
<project name="antTest" basedir="." default="all">
<target name="all" depends="help,init,compile,build,run,clean">
<echo>Finish!</echo>
</target>
<!--定义4个简单属性-->
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="lib" value="lib"/>
<property name="dest" value="dest"/> <!--定义help target,用于输出该生成文件的帮助信息-->
<target name="help" description="打印帮助信息">
<echo>help - 打印帮助信息</echo>
<echo>complie - 编译Java源文件</echo>
<echo>run - 运行程序</echo>
<echo>build - 打包Jar包</echo>
<echo>clean - 清除所有编译生成的文件</echo>
</target> <!--init target,初始化-->
<target name="init">
<!--先删除classes属性所代表的文件夹-->
<delete dir="${classes}"/>
<!--创建classes属性所代表的文件夹-->
<mkdir dir="${classes}"/>
<!--先删除dest属性所代表的文件夹-->
<delete dir="${dest}"/>
<!--创建dest属性所代表的文件夹-->
<mkdir dir="${dest}"/>
</target> <!--定义一组文件路径集-->
<path id="classpath">
<pathelement path="${classes}"/>
</path> <!--定义complie target,用于编译Java源文件-->
<target name="compile" description="编译java源文件">
<!--编译java文件,编译后的class文件放到classes属性所代表的文件夹内-->
<javac destdir="${classes}" includeantruntime="yes">
<!--指定需要编译的Java文件所在的位置-->
<src path="${src}"/>
<!--指定编译Java文件所需要的第三方类库所在的位置-->
<classpath refid="classpath"/>
</javac>
</target> <!--定义build target,用于打包jar文件,运行该target之前会先运行compile target-->
<target name="build" description="打包jar文件" depends="compile">
<!--指定将classes属性所代表的文件夹下的所有*.class文件都打包到app.jar文件中-->
<jar destfile="${dest}/app.jar" basedir="${classes}" includes="**/*.class">
<!--为jar包的清单文件添加属性-->
<manifest>
<attribute name="Main-Class" value="lfy.HelloWorld"/>
</manifest>
</jar>
</target> <!--定义run target,用于运行Java源文件,运行该target之前会先运行compile target-->
<target name="run" description="运行程序" depends="compile">
<!--运行lfy.HelloWorld类,其中fork指定启动另一个JVM来执行Java命令-->
<java classname="lfy.HelloWorld" fork="yes" failonerror="true">
<classpath refid="classpath"/>
<!--运行Java程序时传入2个参数-->
<arg line="测试参数1 测试参数2"/>
</java>
<!--运行可执行jar文件-->
<java jar="${dest}/app.jar" fork="yes" failonerror="true">
<arg line="p1 p2"/>
</java>
</target> <!--定义clean target,用于删除所有编译生成的文件-->
<target name="clean" description="清除所有编译生成的文件">
<delete dir="${classes}"/>
<delete dir="${dest}"/>
</target> </project>
3、编写GoodMorning.java、HelloWorld.java
GoodMorning.java
package fyl;
public class GoodMorning{
public static void say(){
System.out.println("GoodMorning lfy.");
}
}
HelloWorld.java
package lfy;
import fyl.GoodMorning;
public class HelloWorld{
public static void main(String[] args){
for(int i=0;i<args.length;i++){
System.out.println("parameters["+i+"]---->"+args[i]);
}
System.out.println("Hello World!");
GoodMorning.say();
}
}
4、运行结果

5、build.xml相关标签介绍
典型的项目层次结构:
Ant-编译构建(1)-HelloWorld的更多相关文章
- Apache Ant 项目构建
项目构建:通过构建工具对多个项目进行统一批量的编译和运行,比如,对多个Jmeter脚本批量运行 1.Ant是什么? Ant是 构建工具,Apache Ant是一个将软件编译.测试.部署等步骤联系在一起 ...
- Ubuntu环境下利用ant编译nutch2.2.1 & 配置nutch2.2.1
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
- 在flash builder 4.6中使用ant编译项目的详细过程
首先要准备APACHE ANT,目前是1.9.2版 可以去这里下载:http://ant.apache.org/bindownload.cgi?Preferred=http://labs.renren ...
- 使用ant自动构建apk
最近因渠道过多,需要单独接入渠道支付sdk的渠道也很多,而首发在即.人手不足,所以着手了部分相关的工作,看了下目前的操作流程..无奈人比较懒,所以决定进行一波简化的技术,先考虑到了两种方案: 1)脚本 ...
- ant编译mysql驱动
修改驱动源码后需要重新编译构建,由于mysql编译需要两个jdk版本且还需要hibernate4和junit,这里记录下. 安装ant. 配置两个jdk,5和8.并修改build.xml配置,如下: ...
- Ant编译android程序
http://blog.csdn.net/xyz_lmn/article/details/7268582 这一篇主要做了创建android项目.update已存在项目.ant编译项目. 一,准备ant ...
- 【图文】 使用ant编译和发布java项目
开发JavaEE项目经常会碰到修改代码后,项目没有重新编译的问题.老大给指明了一个解决办法:用ant编译项目. ant是apache基金会下的一个项目,是基于Java语言的构建工具. ...
- Zookeeper源代码编译为Eclipseproject(win7下Ant编译)
为了深入学习ZooKeeper源代码,首先就想到将其导入到Eclispe中,所以要先将其编译为Eclispeproject. 1.什么是Ant??? Apache Ant™ Apache Ant is ...
- 使用ant编译项目技能
ant编译时指定jdk的版本号 系统的jdk版本号是1.6,而项目使用的jdk版本号是1.5.所以在编译时须要指定jdk的版本号为1.5,能够使用以下的方法为javac 任务指定fork和execut ...
随机推荐
- MyEclipse使用教程:使用Workbench和Perspectives
[MyEclipse CI 2019.4.0安装包下载] workbench指的是加载IDE时看到的内容,它通常包含一个perspective,这是相关视图和编辑器的布局.您可以根据正在进行开发的类型 ...
- c++ printf和cout的性能
今天做了一道编程题,仔细检查了算法并没有错误,但是结果显示时间超时,但仍有80%的案例通过了,很奇怪. 通过将cin换成scanf,cout换成printf结果AC,实验发现二者性能差了很多,在输出1 ...
- 20191213用Python实现replace方法
def myReplace(s,sub, dest, times =None): #如果times是None,替换的次数是s.count(sub) if times == None: times = ...
- 【Python】selenium模拟淘宝登录
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...
- Leetcode 14. Longest Common Prefix(水)
14. Longest Common Prefix Easy Write a function to find the longest common prefix string amongst an ...
- Move Controller UE4键位
工作中需要,就总结了一下,如下图:
- [CSP-S模拟测试]:string(线段树)
题目描述 给定一个由小写字母组成的字符串$s$. 有$m$次操作,每次操作给定$3$个参数$l,r,x$. 如果$x=1$,将$s[l]~s[r]$升序排序: 如果$x=0$,将$s[l]~s[r]$ ...
- Springboot-H2DB
为什么在Springboot中用H2DB 用Springboot开发需要连接数据库的程序的时候,使用H2DB作为内存数据库可以很方便的调试程序. 怎么用 1.加入依赖 <dependency&g ...
- Mapreduce报错:Split metadata size exceeded 10000000
报错信息: Failure Info:Job initialization failed: java.io.IOException: Split metadata size exceeded 1000 ...
- iview 父组件动态传值给子组件
父组件 <maintenance-super :show="{'modalSuper':modalSuper,'myData':myData}" @on-close=&quo ...