`

翻译:JavaScript and Ant

阅读更多

这则教程是使用Ant的JavaScript和XSLT的汇总,阅读对象适合于中高级的WEB界面开发者。简述之,见笑了。

这则教程来自于Ant使用的邮件列表和手册,社区和论坛提供了更多的和更新的资讯,如果有一些涉及到不公开和版权的问题,请联系作者修改内容。

本文档中所有的邮件地址都做了反网络爬虫处理,替换at为@就是真正的邮件地址。

警告:不对本文的正确性、及时性以及由本文造成的损失负责。本文版权属于开源社区,可以自由拷贝、修改、转帖,请对自己复制和转发等行为负全责。

最新文档参见:http://www.sitepen.com/ant/javascript.html.

 

啥是Ant?
Apache Ant是一个构建工具,有N多用户使用。总的来说是非常适用于经常需要客户端界面开发的人,特别是处理巨多页面的开发者,比如某君经常需要处理SSI、php、asp或者jsp页面。当然了,也很适合构建一个XSLT的站点(比如XALAN)。如果你对Ant不熟的话,先读手册,看看咋安装、咋使用。

为啥要说Ant里面的JavaScript?
Ant并不具备向递归这样的标准程序指令,不过包含了你可以使用你熟悉语种的预构建任务。JavaScript很容易使用,广为人知,也就很容易添加到Ant扩展里面去。

添加JavaScript到Ant里面去
从mozilla上下载Ant可选jar包:bsf.jar、rhino.jar(重命名成js.jar和rhino.jar),添加到classPath里面去,注意老版本Ant可能不支持,所以版本号要搞对,不要混搭。

添加Ant的XSLT
要添加一个XSLT解析引擎,比如Xalan-J-2,你要下载并配置一下:要添加xalan的jar包到ant的classPath下面。

Hello World例子
看看这个Hello World例子,必须的:

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

<target name="setup">
<script language="javascript"> <![CDATA[

       echo = helloWorld.createTask("echo");
       main.addTask(echo);
       echo.setMessage("Hello World!");

   ]]>
</script>
</target>

<target name="main" depends="setup"/>
</project>

generates: 

setup: 

main: 
Hello World! 

BUILD SUCCESSFUL

 

要把JavaScript引入到Ant里面去,就要像使用XML标签一样使用一个script标签。要定义脚本语言,使用老式的语言定义方法也可以,比如设置一个src属性在script标签里面。

生成对象
要让Ant做更有去的事情,就要访问properties、targets、和references,怎么搞,看手册。

project.getProperty(string propertyName); 
project.getUserProperty(string propertyName); 
project.getTarget(string targetId); 
project.getReference(string refereceId); 

 

project可以通过getProject()取得,返回这个可以打日志和其他使用扩展的script task。

如果你搞了重名或者重ID的东西,那么只有最后一个才生效。

 

XSLT Task
要使用标准的XSLT task,需要一个输入和一个输出文件,把参数传给样式表,见下:

<style in="src/webProject.xml" out="temp/index.html"
        extension="html" style="webSite.xsl" processor="trax">
 <param name="pageId" expression="com.sitepen.pages.home"/>
</style>

 

要处理整个文件夹的文档,就要这么搞:

<style basedir="." destdir="temp"
extension="html" style="style/webSite.xsl"/>

 

也可以传N多参数:

<project name="siteBuilder" default="deploy" basedir=".">

   <target name="init">
      <property name="runDir" value="." />
      <property name="varsDir" value="vars" />

      <property name="sourceDir" value="src" />
      <property name="outputDir" value="www" />
      <property name="tempDir" value="temp" />

      <property name="tokenValues" value="tokenValues.properties" />

      <property file="${varsDir}/${tokenValues}" />

   </target>

   <target name="clean" depends="init">

      <delete includeEmptyDirs="true" >
          <fileset dir="${outputDir}" />
      </delete>
   </target>

   <target name="prepare" depends="clean">
      <mkdir dir="${outputDir}" />

   </target>

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

      <copy todir="${tempDir}">

         <fileset dir="${sourceDir}">
            <exclude name="**/*.html"/>

         </fileset>
      </copy>

   <script language="javascript">
      <![CDATA[
     importClass(java.io.File)
        xslt = siteBuilder.createTask("style");
        runDirectory = siteBuilder.getProperty("runDir");
        tempDirectory = siteBuilder.getProperty("tempDir");
        inFile = new File(runDirectory + "/webProject.xml");
        outFile = new File(tempDirectory+"/index.html");
        xslt.setStyle("webSite.xsl");
        xslt.setIn(inFile);
        xslt.setOut(outFile);
        xslt.setProcessor("trax");
        idParameter = xslt.createParam();
        idParameter.setName("pageId");
        idParameter.setExpression("com.sitepen.pages.home");
        xslt.execute();

     ]]>

   </script>

   </target>

   <target name="deploy" depends="compile,init">
      <copy todir="${outputDir}">
         <fileset dir="${tempDir}">

            <exclude name="**/*.xml"/>

         </fileset>
      </copy>
      <delete includeEmptyDirs="true" >
          <fileset dir="${tempDir}" />
      </delete>

   </target>

</project>

 

 

用JavaScript去遍历一个properties文件
*** 我还没试过,因为看起来property文件必须要有一定的特征(NND,这什么玩意,看不懂) ***

用Task来循环
Ant本身是不支持循环机制的,所以很多人就用JavaScript来做到循环。比如可以创建一堆文件夹:

<![CDATA[
importClass(java.io.File); //Java class needed for file creation
var directoryNames = new Array();
directoryNames[0] = "directoryName0";
directoryNames[1] = "directoryName1";
directoryNames[2] = "directoryName2";
// … and so on
// in this example, the directory path is stored as part of the directory name.
for (i=0;i<directoryNames.length;i++)
{
// projectName is the name of your project
makeDirectory = projectName.createTask("mkdir");
directory = new File(directoryNames[i]);
makeDirectory.setDir(directory);
makeDirectory.execute();
}

]]>

  

原文在:http://www.sitepen.com/blog/2001/09/25/javascript-and-ant/

 

分享到:
评论

相关推荐

    二阶段:JavaScript程序设计

    二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript程序设计二阶段:JavaScript...

    深入学习:javascript开发与实例

    目前为止可以说是公认的最好的javascript教材,从入门到深入,十分经典。这本书网上可以说很少有中文版下载的。分两部分

    Beginning JavaScript with DOM Scripting and Ajax: Second Editon

    Common Uses of JavaScript: Image and Windows JavaScript and User Integration: Navigation and Forms Back-End Interaction with Ajax and Node.js Data Validation Techniques Modern JavaScript Case Study: A...

    单页Web应用:JavaScript前端到后端 源代码

    本资源包含的"单页Web应用:JavaScript前端到后端 源码"是对此技术的全面实践,适合JavaScript开发者和前端工程师学习和研究。 一、JavaScript在SPA中的核心作用 JavaScript是构建SPA的基础,它负责处理页面的动态...

    JavaScript权威指南(第6版).JavaScript:The.Definitive.Guide

    Since 1996, JavaScript: The Definitive Guide has been the bible for JavaScript programmers—a programmer's guide and comprehensive reference to the core language and to the client-side JavaScript APIs...

    Beginning JavaScript with DOM Scripting and Ajax

    Chapter 7: JavaScript and User Interaction - Navigation and Forms Chapter 8: Backend interaction with Ajax Chapter 9: Data Validation Techniques Chapter 10: A Dynamic Gallery Chapter 11: Using ...

    JavaScript—The Definitive Guide, 6th Edition[JavaScript权威指南](英文版)

    经典的JavaScript教程 《O'Reilly精品图书系列:JavaScript权威指南(第6版)》讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。《O'Reilly精品图书系列:JavaScript权威指南(第6版)》涵盖了...

    单页web应用:javascript从前端到后端(源码)

    在设计和构建大规模的JavaScript单页Web应用时,有几个关键知识点需要掌握: 1. **前端框架**:前端框架如React、Vue或Angular是SPA的基础,它们提供组件化开发,状态管理,路由等特性,简化了复杂应用的构建。例如...

    manning_-_java_development_with_ant.pdf

    3. **第3章 Understanding Ant datatypes and properties** - **简介**: 介绍Ant中的数据类型和属性的概念及其用途。 - **知识点**: - Ant支持的数据类型及其使用场景。 - 属性的定义、获取和传递方法。 - 如何...

    Murach.Murachs.JavaScript.And.JQuery

    但我可以针对书名《Murach's JavaScript and jQuery》介绍这本书中涵盖的知识点,以及JavaScript和jQuery的基本概念和应用。 《Murach's JavaScript and jQuery》是由Mike Murach和Associates, Inc.出版的一本书籍...

    2018 年 JavaScript 的未来及远方

    “The Future of Javascript 2018 and Beyond,” offers our future-looking analysis and predictions about the latest in JavaScript. We also look back at all the JavaScript craziness from 2017 and neatly ...

    [JavaScript权威指南(第6版)].(JavaScript:The.Definitive.Guide).David.Flanagan.文字版

    - **AJAX**:即Asynchronous JavaScript and XML,是一种在不重新加载整个网页的情况下更新部分网页的技术。 ##### 2. **Lexical Structure**(词法结构) - **2.1 Character Set**(字符集):JavaScript支持...

    Learn JavaScript and Ajax with w3Schools.pdf

    综上所述,《Learn JavaScript and Ajax with w3Schools》这本书旨在提供一个系统的学习指南,帮助读者从基础到高级逐步掌握JavaScript及其在网络应用开发中的实际应用,特别是在Ajax技术方面的使用。通过本书的学习...

    ant 1.8.1源代码

    4. **脚本支持**: Ant 1.8.1增强了对脚本的支持,可以直接在构建文件中嵌入JavaScript、Perl或其他脚本语言代码。 5. **JUnit集成**: 对JUnit测试的支持得到了增强,包括测试结果的汇总和报告,方便进行持续集成和...

    reactant:javascript 中的简单推拉响应式编程

    Reactant 是一个基于 JavaScript 的轻量级响应式框架,它为开发者提供了在 JavaScript 中实现简单、高效的推拉响应式编程的能力。在这个框架中,开发者可以创建可观察的值(Observables),并以此构建复杂的组件和...

    分享100个直接可以拿来用的JavaScript实用功能代码片段

    8. **Ajax**:Asynchronous JavaScript and XML(异步JavaScript和XML)是用于创建动态网页的技术,允许在不刷新整个页面的情况下与服务器交换数据。 9. **定时器和延迟执行**:JavaScript的setTimeout和...

    Web Applications with Javascript or Java, Volume 1-De Gruyter(2018).pdf

    This two-volume book shows how to design and implement web applications with a model-based engineering approach, using the two most relevant technology plat- forms for web development: JavaScript and ...

    DOM Scripting Web Design with JavaScript and the Document Object Model

    《DOM Scripting Web Design with JavaScript and the Document Object Model》是Jeremy Keith与Jeffrey Sambells合著的一本书,专注于使用JavaScript和文档对象模型(DOM)进行Web设计的技术。DOM是万维网联盟(W3C...

Global site tag (gtag.js) - Google Analytics