`

Ant tutorial(2)

阅读更多

编译 Java 代码的任务的编写方式:
                <javac srcdir="src"/>
这个标签寻找 src 目录中以 .java 为扩展名的所有文件,并对它们调用 javac 编译器,从而在相同的目录中生成类文件。当然,将类文件放在一个单独的目录结构中通常会更清晰;可以通过添加 destdir 属性来让 Ant 做到这点。其他有用的属性包括:

classpath:等价于 javac -classpath 选项。

debug="true":指示编译器应该带调试信息编译源文件。

javac 任务的一个重要特点在于,它仅编译那些它认为需要编译的源文件。如果某个类文件已经存在,并且对应的源文件自从该类文件生成以来还没有改变过,那么该源文件就不会被重新编译。javac 任务的输出显示了实际被编译的源文件的数目。编写一个 clean 目标来从目标目录移除生成的任何类文件是个很好的习惯。如果想要确保所有源文件都已编译,就可以使用这个任务。这种行为刻画了 Ant 的许多任务的特点:如果某个任务能够确定所请求的操作不需要执行,那么该操作就会被跳过。

Ant javac 任务的默认行为是调用运行 Ant 本身的任何 JVM 的标准编译器。然而,有时您可能想要单独地调用编译器 —— 例如当你希望指定编译器的某些内存选项,或者需要使用一种不同级别的编译器的时候。为实现这个目的,只需将 javac fork 属性设置为 true,比如像下面这样:

<javac srcdir="src" fork="true"/>

如果想要指定一个不同的 javac 可执行文件,并向它传递一个最大内存设置,可以像下面这样做:

    <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac"

memoryMaximumSize="<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="128" unitname="m">128m</chmetcnv>"/>

在编译 Java 源文件之后,结果类文件通常被打包到一个 JAR 文件中,这个文件类似 zip 归档文件。每个 JAR 文件都包含一个清单文件,它可以指定该 JAR 文件的属性。

下面是 Ant jar 任务的一个简单使用例子:

<jar destfile="package.jar" basedir="classes"/>

这将创建一个名为 package.jar JAR 文件,并把 classes 目录中的所有文件添加到其中(JAR 文件能够包含任意类型的文件,而不只是类文件)。此处没有指定清单文件,因此 Ant 将提供一个基本的清单文件。

manifest 属性允许指定一个用作该 JAR 文件的清单的文件。清单文件的内容还可以使用 manifest 任务在生成文件中指定。这个任务能够像文件系统写入一个清单文件,或者能够实际嵌套在 jar 之内,以便一次性地创建清单文件和 JAR 文件。 例如:

<jar destfile="package.jar" basedir="classes">
  
<manifest>
    
<attribute name="Built-By" value="${user.name}"/>
    
<attribute name="Main-class" value="package.Main"/>
  
</manifest>
</jar>

在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR zip 文件的文件名中。

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

 

这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 <tstamp/> 就足够了。

在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:

<jar destfile="package-${DSTAMP}.jar" basedir="classes"/>

因此,如果这个任务在 2006 38日调用,该 JAR 文件将被命名为 package-20060308.jar

还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:

<tstamp>
   
<format property="OFFSET_TIME"
           pattern
="HH:mm:ss"
           offset
="10" unit="minute"/>
</tstamp>

上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。

用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同。

下面将把这些代码片断组合成一个完整的生成文件,它将编译 src 目录下的所有源代码,将结果类文件放在 build 目录下,然后把所有类文件打包到 dist 目录中的一个 JAR 文件中。要自己试验这个生成文件,您所需要的就是包含一个或多个 Java 源代码文件的 src 目录 —— 这个目录可以包含从简单的“Hell World”程序到来自某个现有项目的大量源文件的任何内容。如果需要向 Java classpath 添加 JAR 文件或其他任何内容,以便成功地编译源代码,您只需在 javac 任务中为其添加一个 classpath 属性:

<?xml version="1.0"?>
<project default="dist" name="Project Argon">
     
<description>A simple Java project</description>  

    
<property name="srcDir" location="src"/>
    
<property name="buildDir" location="build"/>
    
<property name="distDir" location="dist"/>

    
<target name="init">
       
<tstamp/>
       
<mkdir dir="${buildDir}"/>
       
<mkdir dir="${distDir}"/>
    
</target>

    
<target name="compile" depends="init">
       
<javac srcdir="${srcDir}" destdir="${buildDir}"/>
    
</target>

    
<target name="dist" depends="compile">
       
<jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
         
<manifest>
           
<attribute name="Built-By" value="${user.name}"/>
           
<attribute name="Main-Class" value="package.Main"/>
         
</manifest>
       
</jar>
       
<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
    
</target>

    
<target name="clean">
      
<delete dir="${buildDir}"/>
      
<delete dir="${distDir}"/>
    
</target>
</project>

下面是使用该文件执行的某次生成过程的示例输出(您得到的输出可能不一样,具体取决于 src 目录的内容):

Buildfile: build.xml

init:
    [mkdir] Created dir: E:\tutorial\javaexample\build
    [mkdir] Created dir: E:\tutorial\javaexample\dist

compile:
    [javac] Compiling 10 source files to E:\tutorial\javaexample\build

dist:
      [jar] Building jar: E:\tutorial\javaexample\dist\package-20031217.jar
      [jar] Building jar: E:\tutorial\javaexample\dist\package-src-20031217.jar

BUILD SUCCESSFUL
Total time: 5 seconds

注意 JAR 文件是根据当前日期来命名的,并且为应用程序的主类设置了一个清单条目,以便主类能够通过一个简单的命令 java -jar package-20031217.jar 来直接运行。我们还创建了一个 JAR 文件,它仅包含项目的源代码。

 

 

 

 

 

 

分享到:
评论

相关推荐

    Apache Ant Tutorial.pdf

    2. **解压缩文件**:将下载的文件解压缩到一个合适的目录下,例如 `/usr/local/ant`。 3. **配置环境变量**: - **PATH**:将 Ant 的 bin 目录添加到系统 PATH 环境变量中,使得可以在任何位置调用 Ant 命令。 - ...

    ant tutorial

    2. **Ant 的核心概念** - **Project**:Ant 的顶级容器,包含整个构建过程。 - **Target**:项目中的独立单元,定义了一组任务,可以被其他 target 引用或依赖。 - **Task**:实际执行的操作,如 `javac`(编译 ...

    Ant参考教程,Ant使用指南,Ant全攻略

    "Ant+Tutorial.doc"可能深入到Ant的高级特性,包括使用条件语句(if/else)、属性文件、通配符选择器、宏定义(macrodef)以及自定义任务。通过属性文件,可以外部化配置信息,使构建更具灵活性。宏定义则允许用户...

    Gradle Tutorial

    标题为“Gradle Tutorial”的文档是一份关于Gradle构建工具的英文教程,介绍了Gradle的版本信息、实现方式、核心概念以及如何快速上手。文档指出,Gradle是类似于Maven和Ant的构建工具,它目前正开始被更广泛地采用...

    EJB3 实例教程(JBoss+Eclipse+Ant)

    在学习过程中,提供的`first-ejb3-ant-tutorial-en.pdf`文档将详细解释每个步骤,而`first-ejb3-ant-tutorial.zip`则包含了源代码和相关资源,供读者实际操作练习。 总之,这个教程旨在帮助开发者快速理解和掌握EJB...

    struts1 tutorial

    2.Installation of Struts 3.The First Try: Simple JSP 4.Second Try: Struts For Internationalisation 5.Struts for Forms 6.Struts: Introducing the ActionForm 7.A better way to seperate Book ...

    J2EE Tutorial中文版

    本教程《J2EE Tutorial中文版》将详细阐述这些概念,并通过实例演示如何在实际项目中应用。无论你是初学者还是有经验的开发者,都能从中受益,提升在J2EE领域的技能。通过学习,你将能够熟练地构建高效、可靠的企业...

    JUnit Testing Utility Tutorial.pdf

    JUnit 还与 Apache Ant 等工具集成,进一步提高了自动化测试的能力。 #### 二、安装指南 安装 JUnit 前提条件包括熟悉如何设置环境变量及在操作系统上安装软件。对于 Windows 用户,可以通过《配置 Windows 工作...

    struts tutorial.pdf

    - **Ant概述**: 解释Ant的作用及其在软件开发中的重要性。 ##### 11.3 Ant的配置 - **配置文件**: 介绍如何编写Ant的配置文件,以便于进行项目的构建任务。 ##### 11.4 Ant的使用 - **使用指南**: 提供具体实例,...

    tutorial-osgi:OSGI 示例

    只需在项目文件夹中运行ant ,这将指示 Ant 下载一些额外的库。 $ ant 然后,您可以运行任何您想要的示例。 运行ant -p以发现可用的示例。 $ ant -p Buildfile: tutorial-osgi/build.xml Launching various ...

    Struts tutorial

    2. **Struts体系结构**: - Struts遵循MVC模式,将业务逻辑(Model)、用户界面(View)和控制流程(Controller)分离。Controller由ActionServlet担任,它接收用户的请求,解析并转发到相应的Action。 3. **...

    Struts tutorial(中文)

    16. **用Ant Compilation和Distribution**:Ant是Java项目构建的工具,这部分涵盖了Ant的安装、配置和使用,以及如何用Ant完成项目的编译和部署。 17. **结论**:总结整个教程的主要内容和学习成果。 18. **关于这...

    JavaEE 5.0 Tutorial.pdf

    ##### 2. Java EE 5 API - **Enterprise JavaBeans 技术**:提供了会话Bean和消息驱动Bean,用于实现业务逻辑。 - **Java Servlet 技术**:用于处理HTTP请求和响应。 - **JavaServer Pages 技术**:混合HTML代码和...

    Web Service Tutorial JAVA

    - **构建与运行**:使用 Systinet Server for Java 的构建脚本(ANT)来构建和部署 Web 服务。这个过程可能包括编译 Java 源代码、生成 WSDL 文件以及部署服务。 - **总结**:经过这一系列步骤后,我们的聊天服务器...

    Struts Tutorial

    - **Ant简介**:Ant是一个Java工具,用于构建和部署Java应用程序。 - **配置Ant**: - 安装Ant - 创建build.xml文件来定义构建任务 - 执行Ant命令进行编译和打包 #### 十二、结论与展望 - **总结**:回顾了整个...

    maven-tutorial:Apache Maven,httpclient,tomcat,ant和tile指南

    在实际项目中,两者各有适用场景,有时也会结合使用,如Maven Ant Tasks可以让Maven调用Ant任务。 【Tiles Framework】 Tiles(也称为Tiles 2)是Apache Struts的一个子项目,提供视图组合功能,用于构建复杂的Web...

    tracemetrics-tutorial-1.0.pdf

    如果选择不使用Netbeans,可以在解压后的目录下执行`$ ant build.xml`命令进行编译。 #### 运行TraceMetrics ##### 启动JAR包 运行JAR文件是启动TraceMetrics的一种常见方式,确保已正确配置Java环境。 #### 分析...

    ICEFaces :autocomplete-tutorial.zip

    这个"autocomplete-tutorial.zip"压缩包提供了一个关于如何在ICEFaces框架中使用自动补全功能的教程。自动补全功能是用户界面中常见的一种特性,允许用户在输入时获得建议或匹配项,通常用于搜索框或者表单字段,...

Global site tag (gtag.js) - Google Analytics