Ant学习笔记

简介: Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。安装和配置下载ant,http://ant.apache.org/。解压压缩包,如放置在F:\chuxing\apache-ant-1.9.6,目录结构如下: bin是ant的程序运行入口。 etc中存放的是一些xsl的输出模板。 lib中存放的是an

Ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

安装和配置

  1. 下载ant,http://ant.apache.org/
  2. 解压压缩包,如放置在F:\chuxing\apache-ant-1.9.6,目录结构如下:
    bin是ant的程序运行入口。
    etc中存放的是一些xsl的输出模板。
    lib中存放的是ant程序需要依赖的jar包。
    manual中存放的是ant程序的帮助文档。
  3. 新建系统变量ANT_HOME = F:\chuxing\apache-ant-1.9.6,在PATH中添加ANT_HOME目录下的bin目录。
  4. 测试。在cmd中输入ant回车,如果看到如下提示则表示配置成功。

    Buildfile: build.xml does not exist!
    Build failed

准备项目

我们将java源文件放在src目录中,所有生成的文件放在build目录中,build下面有两个子目录classses和jar,分别用于存放编译得到的class文件和生成的jar文件。

1 创建src目录

md src

2 在src\oata\HelloWorld.java文件中编写如下代码:

package oata;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

3 编译和运行

md build\classes
javac -sourcepath src -d build\classes src\oata\HelloWorld.java
java -cp build\classes oata.HelloWorld

4 创建一个可执行的jar文件

echo Main-Class: oata.HelloWorld>myManifest
md build\jar
jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .
java -jar build\jar\HelloWorld.jar

使用Ant运行程序

默认情况下,Ant使用build.xml作为buildfile文件,我们的.\build.xml内容如下:

<project>

    <target name="clean">
        <delete dir="build"/>
    </target>

    <target name="compile">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" includeantruntime="on"/>
    </target>

    <target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-Class" value="oata.HelloWorld"/>
            </manifest>
        </jar>
    </target>

    <target name="run">
        <java jar="build/jar/HelloWorld.jar" fork="true"/>
    </target>

</project>

现在可以通过如下命令编译、生成jar文件和运行程序:

ant compile
ant jar
ant run

或者直接使用:

ant compile jar run

增强后的build文件

<project name="HelloWorld" basedir="." default="main">

    <property name="src.dir"     value="src"/>

    <property name="build.dir"   value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="jar.dir"     value="${build.dir}/jar"/>

    <property name="main-class"  value="oata.HelloWorld"/>



    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
        </jar>
    </target>

    <target name="run" depends="jar">
        <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
    </target>

    <target name="clean-build" depends="clean,jar"/>

    <target name="main" depends="clean,run"/>

</project>

此时可以只输入ant命令就完成所有工作。

目录
相关文章
|
NoSQL Linux 测试技术
redis的安装步骤及前台,后台redis服务启动
这篇文章介绍了Redis的安装步骤,包括在Linux系统中下载、传输、解压、编译、安装Redis,以及Redis服务的前台和后台启动方法。
redis的安装步骤及前台,后台redis服务启动
|
存储 机器学习/深度学习 算法
Python科学计算库SciPy
SciPy是一个开源的Python科学计算库,提供了一组丰富的数学、科学和工程计算功能。它建立在NumPy之上,与NumPy密切集成,为用户提供了更高级的功能和工具。 SciPy库包含了许多模块,每个模块都专注于特定领域的计算任务。下面是一些常用的SciPy模块及其功能:
|
11月前
|
数据采集 DataWorks 数据可视化
DataWorks云产品试用体验
大家好,我是V哥。DataWorks是阿里云提供的大数据开发治理平台,涵盖数据采集、存储、开发、治理、分析和可视化全生命周期。其图形化界面简化开发流程,分布式架构提升处理速度,适合非专业人员使用。尽管存在一定的学习曲线,但凭借强大的云计算资源和开放性,DataWorks展现出卓越的性能和稳定性,助力企业高效处理大数据,支持业务决策与优化。欢迎关注威哥爱编程,一起探索全栈之路。
253 1
|
11月前
|
Java 编译器 UED
Arrays.asList() 数组转换成集合酿成的线上事故,差点要滚蛋了!
本文介绍了Java开发中使用`Arrays.asList()`方法将数组转换为集合时的一个常见陷阱。该方法返回的List是固定长度的,不支持添加或删除操作,直接使用可能导致线上故障。文章通过一次实际开发中的事故案例,分析了问题的原因,并提供了使用`java.util.ArrayList`进行封装的解决方案,以避免此类错误的发生。希望读者能从中吸取教训,提高代码的健壮性。
|
12月前
|
人工智能 搜索推荐
阿里云亮相白鲸出海全球流量大会,为出海企业提供一站式通信解决方案
阿里云亮相白鲸出海全球流量大会,为出海企业提供一站式通信解决方案
342 9
|
12月前
|
C语言 开发者
C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧
本文深入探讨了C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧,并通过案例分析展示了其应用,展望了未来的发展趋势,旨在帮助读者提升程序质量和开发效率。
555 5
|
监控 安全 前端开发
现货期权交易所开发技术规则及案例说明
现货期权交易所开发源码包含交易、行情、结算、风险控制和信息安全五大功能。支持交易品种上市、实时行情发布、资金结算、异常交易监测等,确保交易的公平性、高效性和安全性。案例中采用Spring Boot、Vue.js等技术,实现期权合约买卖、行情展示等功能,经过全面测试和优化后上线运营。
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
存储 缓存 安全
https访问提示不安全,证书密钥验证上如何解决
【10月更文挑战第4天】访问提示不安全,证书密钥验证上如何解决
1561 2
|
存储 人工智能 自然语言处理
AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
【7月更文挑战第2天】AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望