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 ...
随机推荐
- shell字符串拼接
name="Shell" url="http://c.biancheng.net/shell/" str1=$name$url #中间不能有空格 str2=&q ...
- Java HashMap 实现概况及容量
原文链接:https://mp.weixin.qq.com/s/JcnSOGKQlDgaTTFKZFbXnA?scene=25#wechat_redirect 1 简单说说 HashMap 的底层原理 ...
- java:Set对象TreeSet有序子类,HashSet无序子类,重复对象二
TreeSet有序子类; HashSet无序子类 重复重复元素,Object对象是通过equals和hashCode来进行过滤的. 如果将上一篇提到中的例子中的TreeSet,换成HashSet,那么 ...
- 《SaltStack技术入门与实践》—— Mine
Mine 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Mine是SaltStack收集Minion数据存储到Master的一个组件,它的功能与Gr ...
- React Native 中 static的navigationOptions中的点击事件不能用this
想在某个页面中设置导航栏,title + 左右按钮(按钮上肯定需要有事件) static navigationOptions = ({ navigation, navigationOptions }) ...
- Linux常用命令学习记录
兄弟连Linux培训 ,小编整理了常用的Linux学习命令: 1 cp 拷贝命令 参数:-p 文件属性一起拷贝 -r 拷贝文件夹 -d 软链信息等一起拷贝 -a 是-rdp的简写 2 find 文件查 ...
- ckeditor实现WORD粘贴图片自动上传,jsp应用
官网地址http://ueditor.baidu.com Git 地址 https://github.com/fex-team/ueditor 参考博客地址 http://blog.ncmem.com ...
- makefile 打印
$(warning ----------$(abc)) $(info -----------------$(abc))
- 【PowerOJ1742&网络流24题】试题库问题(最大流)
题意: 思路: [问题分析] 二分图多重匹配问题,用最大流解决. [建模方法] 建立二分图,每个类别为X集合中的顶点,每个题为Y集合中的顶点,增设附加源S和汇T. 1.从S向每个Xi连接一条容量为该类 ...
- USACO2018 DEC (Gold) (dp,容斥+哈希,最短路)
\(T1\) 传送门 解题思路 傻逼\(dp\)..直接\(ST\)表处理最大值\(O(n^2)\)艹过了. 代码 #include<bits/stdc++.h> using namesp ...