`

Ant高级特性-模块化

阅读更多

 

Ant作为一种编程的辅助工具,可以看作与脚本一个级别的东西。写一个build.xml,用它来帮助你干各种小杂活,应该是一件很简单的事情。但是如果是一个很大的工程呢?如果你需要写很多的build.xml,那么与其他脚本语言一样,由于维护和代码重用的压力,你必须考虑到一个因素:模块化。到1.6版为止,Ant已经提供了很多Task,可以帮助实现Ant脚本的模块化。
1. Property
  Property Task除了能够定义单个的属性,还可以从一个属性定义文件定义多个property。把公用的属性放到属性文件中,各个build.xml中都载入此属性文件,就可以避免在每个build.xml中重复定义这些属性。
2. AntCall, Ant和SubAnt
AntCall可以理解为简单的函数调用。举一个例子就清楚了:
  
<?xml version="1.0" ?>
<project name="testAnt" default="commonTarget" >
 <target name="commonTarget">
  <echo message="${test.param}"/>
 </target>
 
 <target name="callingTarget">
  <antcall target="commonTarget">
   <param name="test.param" value="Modulation" />
  </antcall>
</target>
</project>

 输出结果如下所示:>ant callingTarget

输出结果 写道
callingTarget:
commonTarget: 
       [echo] Modulation

  从上面的例子可以看到,指明要调用的target,再通过<param>指明调用参数;在被调用的Target中,通过与引用property类似的方式即可引用param的值。
  至于Ant Target,也是调用别的Target,不过那个Target可以是在另外一个ant 文件中。至于SubAnt是什么?还不太清楚。

 3. MacroDef
  AntCall很好用,不过当参数很多时要写很多的<param name=”” value=”” />起来很麻烦,如果你想偷懒,用MacroDef就行了。下面把上面的例子用MacroDef重写:
<?xml version="1.0" ?>
<project name="testAnt" default="test" >
<macrodef name="showModule">
   <attribute name="v" default="NOT SET"/>
   <element name="some-tasks" optional="yes"/>
   <sequential>
      <echo>v is @{v}</echo>
      <some-tasks/>
   </sequential>
</macrodef>
	
<target name="test">
    <showModule v="This is V">
        <some-tasks>
	<echo>this is a test</echo>
        </some-tasks>
    </showModule>
</target>
</project>

运行结果:>ant 

运行结果 写道
test:
       [echo] v is This is V
       [echo] This is a test

从输出可以看出,我们可以象系统提供的其他Task一样引用test,的确简洁多了。定义一个Macro,首先定义此宏的attribute,包括attribute的name, default;然后在<sequential>标签中定义此宏的所有操作。注意对attribute的引用是@{attr-name}!实际上,Ant还允许在attribute后面定义一组element,达到极高的动态性。

 4. Import
  <antcall>和<marcodef>可以达到类似函数的效果,但是调用者和被调用者还是必须在同一个文件中。Ant从1.6开始引入Import Task,可以真正的实现代码重用:属性,Task 定义,Task, Macro。一个简单的例子:

<?xml version="1.0" ?>
<project>
<property name="project.name" value="Ant Modulazation" />

<target name="commonTarget">
	<echo message="${test.param}" />
</target>
 
<macrodef name="showModule">
   <attribute name="test.param" default="NOT SET"/>
   <sequential>
      <echo message="@{test.param}" />
   </sequential>
</macrodef>
</project>

 

<?xml version="1.0" ?>
<project name="testCommon" default="callingTarget">
<import file="common.xml" /> 
<target name="callingTarget" depends="testMacro">
    <antcall target="commonTarget">
	<param name="test.param" value="Modulation" />
    </antcall>		
</target>
 
<target name="testMacro">
    <showModule test.param="Modulation" />
</target>
</project>

  

运行结果如下:>ant

运行结果 写道
testMacro: 
          [echo] Modulation
callingTarget:
commonTarget: 
          [echo] Modulation

 注意:在common.xml中,不能对project元素设置属性;另外,不要试图使用重名的property,或target以获取覆盖

的效果,因为Ant毕竟不是编程语言。

分享到:
评论

相关推荐

    ant-design-pro-master

    Ant Design Pro是Ant Design的高级版本,它不仅包含基础的UI组件,还引入了更高级的企业级特性和最佳实践。例如,它支持动态路由、权限控制、数据管理、页面模板等,这些特性使得开发复杂的企业级应用变得更加简单。...

    ant-design-vue-pro-master.zip

    总结来说,Ant Design Vue Pro Master是一个强大且完善的前端项目模板,其多页签功能依赖于Vue Router的高级特性。通过深入理解这些配置文件,开发者可以更好地掌控项目,并从中学习到前端开发的最佳实践。同时,它...

    前端项目-ant-design-pro.zip

    5. **Less/Sass**: Ant Design Pro 基于CSS预处理器,可能是Less或Sass,这允许开发者编写更模块化、可维护的CSS,并支持变量、嵌套规则和混合等功能。 6. **Git版本控制**: 项目来源于Git仓库的"master"分支,...

    ant-apache-resolver-1.6.5_001.jar.zip

    Ivy作为Ant的一个扩展,专门设计用于管理项目依赖,与Ant集成紧密,可以充分利用Apache Resolver的功能,同时提供更高级的特性,如版本冲突解决策略和多模块项目的依赖管理。 总的来说,`ant-apache-resolver-1.6.5...

    ant-design-pro

    "ant-design-pro" 是一个基于 React 和 Ant Design 的高级前端开发框架,专为构建企业级应用而设计。Ant Design Pro 提供了一套完整的 UI 模板、组件和工具,极大地提高了开发效率,使得开发者能够快速地搭建出美观...

    react-ant-design-pro基础项目modules

    1. **模块化编程**:React中的模块化通常通过导入和导出来实现,这使得代码更加可读、可维护,同时也便于代码重用。 2. **Ant Design组件**:Ant Design提供了一系列美观且响应式的UI组件,如按钮、表格、表单等,...

    SpringBoot+ant-design-pro-vue前后端分离,权限管理系统.zip

    微服务支持:SpringBoot是微服务架构的理想选择,可以帮助您构建模块化、可扩展的应用程序。 社区支持:全球的开发者社区意味着您可以在遇到问题时找到大量的资源和支持。 无论您是初出茅庐的Java新手,还是经验...

    基于Go-Zero + Ant Design Pro的前后端分离微服务管理系统的前端模

    Ant Design Pro的组件化特性使得前端开发更为模块化,易于维护和扩展。而Go-Zero的API接口设计和文档生成功能,方便前端与后端进行接口对接。 在微服务管理系统中,前端通常需要与多个微服务进行交互,获取和展示...

    apache-ant-antunit-1.4-src.zip

    标题中的"apache-ant-antunit-1.4-src.zip"表明这是一个包含Apache Ant AntUnit模块1.4版本的源代码压缩包。AntUnit是Ant的一个扩展,它是用于测试Ant构建脚本的框架,类似于JUnit对于Java应用程序测试的作用。...

    Ant入门学习手册(java ant教程)

    - **链接构建文件**:通过`import`任务,可以在多个构建文件之间建立关联,实现构建逻辑的模块化和复用。 - **使用CVS知识库**:Ant提供了与版本控制系统集成的功能,可以直接从CVS、SVN等版本库中检出代码,进行...

    ant开发指南用于说明ant一些相关信息

    四、Ant高级特性 1. **条件语句和循环**:通过`if`、`unless`属性,可以在构建脚本中添加条件判断逻辑。而`foreach`任务则提供了循环遍历列表的能力。 2. **文件列表和路径操作**:`fileset`和`path`元素用于处理...

    teamcity-ant脚本.rar

    TeamCity还提供了许多高级特性,如分布式构建、VCS根的配置、构建缓存等,这些都可以与Ant脚本结合使用,进一步提升构建效率和灵活性。 通过TeamCity和Ant的集成,开发团队可以实现高效的自动化构建和部署流程,...

    AntDesign3.9.x_Axure_20180903 Axure8 Axure9 亲测有效

    这个设计系统提供了一套模块化的解决方案,旨在帮助设计者和开发者更高效地创建高质量的用户体验,同时确保设计的一致性和易用性。3.9.x版本是AntDesign的一个重要里程碑,它包含了丰富的组件和样式,适应了不断变化...

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

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

    ant 中文手册2.0

    总之,《Ant中文手册2.0》教程全面涵盖了Ant的基本使用方法和高级特性,无论是初学者还是经验丰富的开发者,都能从中受益。通过深入学习和实践,你可以充分利用Ant的强大功能,提高Java项目构建的效率和可维护性。

    vue-vben-admin-main源码

    11. **CSS预处理器**:项目可能使用Less或Sass等预处理器来编写样式,这提高了代码的可维护性和模块化。 12. **测试**:虽然未提及,但大型项目通常会有测试配置,如Jest或Mocha,确保代码质量。 通过深入学习和...

    Ant权威指南.rar

    本指南深入浅出地介绍了Ant的核心概念、基本语法以及高级特性,旨在提升读者的项目管理和自动化构建能力。 Ant是基于XML的,其主要文件是build.xml,这是一个包含了构建过程所有任务和依赖关系的配置文件。在《Ant...

    ANT使用指南.PDF

    #### 三、Ant 的高级特性 ##### **3.1 文件系统操作与模式匹配** - **文件操作**:Ant 提供了丰富的文件操作任务,如 `&lt;copy&gt;`、`&lt;delete&gt;` 等,便于管理项目资源。 - **模式匹配**:通过 `&lt;patternset&gt;` 和 `...

    BlueJ Ant-开源

    这个目录结构反映了项目的模块化,使得代码更容易理解和维护。通过BlueJ Ant扩展,开发者可以直接在IDE内对这些源代码执行Ant构建任务,如编译、运行测试或者创建可执行的jar包。 在开源软件的世界里,BlueJ Ant的...

    Ant入门与进阶

    这个"Ant入门与进阶"的主题涵盖了从初识Ant到深入掌握其高级特性的全过程,对于Java开发者来说,这是一个至关重要的工具,因为它是构建Java项目的主要方式之一。 Ant的名称来源于“蚂蚁”,寓意其能够像蚂蚁一样...

Global site tag (gtag.js) - Google Analytics