向蚂蚁致敬(1)

本文介绍如何使用Ant技术部署和构建Java应用程序,通过HelloWorld例子阐述其延展性优势。Ant补充集成开发环境,使程序自动化构建和测试成为可能。还介绍了Ant构件文件的结构,以及简单的使用示例,具体可参考相关指南。
 

                                          作者:csdn Dorian 写于 2004-03-16

 本文是什么?

本文是一篇介绍如何使用Ant这项非常强大的技术来部署和构件一个Java应用程序。通过一个HelloWorld例子来阐述Ant在延展性方面的优势。Ant补充了集成开发环境,但并不取代任何集成开发环境,也没有集成开发环境能取代AntAnt提供了一个基于构件-部署过程的标准以减少潜在的破坏。Ant使程序的自动化构件和测式成为可能。

 

从哪里获得Ant

作为Jakarta项目的一部分,AntApache软件组织进行开发。你可以到 http://jakarta.apache.org/ant/index.heml 获得其最新的版本。下载后解压到一个目录(我这里是G:/Program/Ant),并设置环境变量如下:

set  ANT_HOME = G:/Program/Ant

PATH = %PATH%;G:/Program/Ant/bin

 

在使用Ant前应知道的

       Ant的构件文件是用XML语言编写的。每个构件文件包含一个项目元素,每个项目元素又包含多个目标元素,而每个目标元素又包含了一系列的任务元素。一个任务元素执行诸如拷贝文件、编译一个项目或建立一个JAR文件等的功能。

       可以使用depends属性来声明某个目标依赖于另一个目标。让我们来看一个简单的例子(清单一)

 

清单一:

<!—build.xml-->

<?xml version="1.0"?>

<project name=”hello” default=”compile”>

<target name=”prepare”>

    <mkdir dir=”./Classes”/>

</target>

<target name=”compile” depends=”prepare”>

    <javac srcdir=”./src” destdir=”/Classes”/>

</target>

</project>

 

当在当前目录中在命令行输入ant的时候,它会寻找名为build.xml的构件文件。它会执行构件文件中的默认目标(defaule=”compile”)。在compile目标中内建了任务javac来编译当前目录中src下的java原代码。并将src目录下的内容编译到当前目录中的Classes下。应当注意到在此目标中有一个depends属性指向prepare目标(depends=”prepare”),因此在执行compile目标之前先会执行prepare目标。

这里只是简单介绍一下Ant的用法,具体可参看Steve Loughran编写的一个Ant指南叫Ant In Anger。可在Ant的二进制文件发布包中的docs目录中找到。

 

开始

       在开始之前有必要介绍一下这个项目在我电脑中的目录结构(G:/Program/Ant),如图一。

图一

 

       可以看到三个java源文件存放于HelloWorld项目目录中的PanelàsrcàDorianFrameàsrcàDorianMainàsrcàDorian中。其源文件如清单二。

 

清单二;

//HelloWorldPanel.java

package Dorian;

 

import java.awt.BorderLayout;

import java.awt.Font;

import javax.swing.JPanel;

import javax.swing.JLabel;

 

public class HelloWorldPanel extends JPanel {

    public HelloWorldPanel() {

        setLayout(new BorderLayout());

       

        label = new JLabel("Hello World!");

       

        label.setAlignmentX(JLabel.CENTER_ALIGNMENT);

        label.setAlignmentY(JLabel.CENTER_ALIGNMENT);

        Font font = new Font("Arial",Font.BOLD,20);

       

        label.setFont(font);

       

        add(label,BorderLayout.CENTER);

    }

   

    private JLabel label;

}

 

// HelloWorldFrame.java

package Dorian;

 

import javax.swing.JFrame;

import java.awt.Container;

 

public class HelloWorldFrame extends JFrame {

    public HelloWorldFrame() {

        panel = new HelloWorldPanel();

        contentPane = this.getContentPane();

       

        contentPane.add(panel);

       

        this.setTitle("Hello World!");

        this.setSize(WIDTH,HEIGHT);

        this.dispose();

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

   

    private Container contentPane;

    private HelloWorldPanel panel;

    private final static int WIDTH = 200;

    private final static int HEIGHT = 100;

}

 

// HelloWorldMain.java

package Dorian;

 

public class HelloWorldMain {

    public static void main(String[] args) {

        HelloWorldFrame frame = new HelloWorldFrame();

        frame.setVisible(true);

    }

}

 

       清单二中的代码我就不说了,是java应用程序中最简单的例子。那接下来就要为Panel建立项目的目录结构了(清单三)Panel构件文件有6个目标:setPropsinitcleandeletepreparecompilepackageall

目标

说明

setProps

如果输出目录不存在,用来设置输出目录(outputdir)的特性。

init

初始化所有和outputdir特性有关的其它特性。

clean

负责清除输出目录和输出的JAR文件。

prepare

当输出目录不存在时建立之。

compile

完成项目的编译工作。

package

将已经编译的Java文件打包。

all

运行所有目标。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值