向蚂蚁致敬(1)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />             

作者:Dorian 写于 2004-03-16

 

本文是什么?


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

 

从哪里获得Ant

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

set  ANT_HOME = G:ProgramAnt

PATH = %PATH%;G:ProgramAntin

 

在使用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:ProgramAnt下),如图一。

图一


 

       可以看到三个java源文件存放于HelloWorld项目目录中的PanelàsrcàDorian、FrameàsrcàDorian和Mainà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个目标:setProps、init、clean、delete、prepare、compile、package、all。

目标

说明

setProps

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

init

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

clean

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

prepare

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

compile

完成项目的编译工作。

package

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

all

运行所有目标。

时间: 2024-10-24 17:48:29

向蚂蚁致敬(1)的相关文章

蚂蚁金服&amp;阿里云在线金融技术峰会全套资料(视频+PDF)公开!

8月30-31日我们成功举办了"蚂蚁金服&阿里云在线金融技术峰会".本次峰会聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践.目前相关活动视频.整理文章已经出炉,整理如下,供大家参考. 蚂蚁金服&阿里云在线金融技术峰会精彩回顾:https://yq.aliyun.com/activity/109 为了让大家更好的了解本次峰会议题和分享讲师,我们汇总了本次议题介绍如下,供大家参考.在峰会开始前,邀请大家仔细看下

漆远:蚂蚁金服 AI 技术大揭秘, 开放“模型服务平台”

在本次大会上,蚂蚁金服副总裁兼首席数据科学家漆远博士发表了主题为<金融智能的发展与应用>的演讲.漆远表示,蚂蚁金服今年的两个关键词,一个是"开放",一个是"AI". 在此次演讲中,漆远从风控系统.智能助理.定损宝等产品案例出发,全面介绍了蚂蚁金服产品背后的 AI 技术. 现场,蚂蚁金服的"模型服务平台"首次公开亮相,主打"模型所见即所得".漆远表示,数据是资产,模型本身也是资产.未来,蚂蚁金服也会将这个平台作为其中

蚂蚁金服人工智能部技术总监李小龙:智能金融实践

在本次大会上,蚂蚁金服人工智能部技术总监李小龙作为 CCAI 2017 智能金融论坛主席为参会者带来了<蚂蚁金服智能金融实践>的分享. 以下内容根据李小龙本次主题演讲整理,略有删减: 今天早上我们的副总裁.首席数据科学家漆远博士给大家讲了很多金融智能创新的例子,我主要是从<蚂蚁金服智能金融实践>这方面给大家作阐述. 首先,我们认为金融服务是AI创新的最好场景之一,主要是三个理由: 第一,场景非常丰富,打开支付宝我们知道这不仅是一个支付工具,可以把AI应用到理财.投资.贷款.征信等业

蚂蚁金服漆远:人工智能是如何重新定义金融行业的?

"蚂蚁金服是一家TechFin公司,而不是FinTech公司",这是蚂蚁金服给自己的定位. 蚂蚁金服副总裁.首席数据科学家漆远认为,金融领域核心的问题是风险管理,而蚂蚁金服希望用技术.数据能力去助力金融企业,去服务普通消费者和商户,提升金融机构的风险管理能力.这是蚂蚁金服强调技术,而不是做金融的主要原因. 事实上,人工智能就是蚂蚁金服最核心的技术之一.在蚂蚁金服内部,诸如机器学习.人脸识别.NLP等人工智能技术已经在支付.理财.保险定价.信用.智能客服等领域实现了应用. 对此,漆远举了

蚂蚁金服李小龙:“人工智能+金融”机遇与挑战并存,蚂蚁金服都做了什么?

金融被誉为是人工智能的风口之一,蚂蚁金服无疑是这一风口下的先行者. 蚂蚁金服只做Tech(技术),用技术支持金融机构做好Fin(金融),这样的定位和大多数试水"人工智能+金融"企业大相径庭. 不久前,蚂蚁金服把其在深度学习图像算法研究上的最新成果开放给了保险行业:开放车险定损产品--定损宝. 而这只是蚂蚁金服用技术服务金融行业的冰山一角,从支付.智能风控.信贷决策.理财.保险定价.信用到智能客服,蚂蚁金服正在在用人工智能来影响和助力金融行业. 这背后给技术带来了多大的挑战? 蚂蚁金服人

蚂蚁金服资深技术专家周俊:大规模机器学习在蚂蚁+阿里的应用

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 来自蚂蚁金服的资深技术专家周俊 ,将在

零距离观察蚂蚁+阿里中的大规模机器学习框架

本文根据蚂蚁金服的资深技术专家周俊在蚂蚁金服&阿里云在线金融技术峰会上<大规模机器学习在蚂蚁+阿里的应用>的分享整理而成.在分享中,周俊详细介绍了阿里巴巴大规模机器学习框架--参数服务器的设计理念以及优化方法,并结合支付宝.阿里妈妈直通车搜索广告等具体场景详解了参数服务器在蚂蚁金服和阿里内的应用:分享最后,他对大规模机器学习的未来发展做了展望. 直播视频:点击此处观看 幻灯片下载:点击进入 以下为整理内容. ---------------------------------------

蚂蚁金服安全产品技术资深总监冯春培:用生态的力量解决安全生态的问题

一年一度的阿里安全峰会创立于2014 年,今年已是第三届,于7月13-14日在北京国家会议中心举办.峰会旨在促进亚太区信息安全行业发展,为本地区信息安全组织.信息安全专业人士和决策者搭建一个信息交流展示平台,探讨当前安全行业的最佳实践.热点议题.信息安全人才培养.新兴技术与发展趋势等.2016阿里安全峰会设立12个分论坛,数十家领军企业参与.国内外顶级安全专家演讲,在电商金融安全,移动安全,威胁情报,人才培养,电子取证等热门安全行业问题进行深入探讨与交流,除此之外大会前一天还进行了顶级电商安全移

关于╃木蚂蚁㊣的网络历程

网络 网络经历: 在N年前 我还是一个不会用电脑的菜菜(当然了现在也还很菜),当时候上网玩易网炮炮,结识了一个女孩,她带我去了她在西祠建立的一个版块http://b123088.xici.net/       曾经半年的时间泡在里边,后来慢慢有了想开自己版块的想法,由于当时候迷恋破解软件,经常去-白菜乐园-和看雪学院,也学了东西,再后来就开了中国破解联盟,以后经过我和广大朋友的努力,半年内发展成xici电脑版块的N0.1 ,由于西祠那时候服务器和不稳定,速度急慢!在众弟兄的支持下,网友(我不能忘