`
qiang106
  • 浏览: 388579 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ant编译重设property的值

阅读更多

ant已经有N多种替代方案了,但也不是ant就没有可用之外了,它的跨平台性还是有很大的优势。

android就经常是使用ant来构建的。

 

ant脚本中property默认是不能重新设置值的,第一次定义之后,在整个project执行过程中是不会再变的。

最简单的定义方式如下:

 

<property name="build.target" value="release" />

但是在我们的编译脚本中经常有可能需要用到可以变的值,另一种值设值方式可以满足我们:

 

<var name="build.target" value="release" />

定义变量可以随时重新设值,但是又有一点,如果我们需要使用condition来条件设值的时候,不好意思,不支持var。 

<condition property="BATCH_INPUT" value="${env.BATCH_INPUT}" else="${local.BATCH_INPUT}">
          <isset property="env.BATCH_INPUT" />
</condition>

 

直接点,要property支持重设,也不是不可能,在jdk 1.6之后,使用contrib可以支持,需要定义一个重设的脚本,需要下ant-contrib-0.6.jar到ant的lib目录下

<scriptdef name="propertyreset" language="javascript"
   		description="Allows to assign @{property} new value">
    	<attribute name="name"/>
    	<attribute name="value"/>
       	project.setProperty(attributes.get("name"), attributes.get("value"));
</scriptdef>

同时增加以下一行声明:

<taskdef resource="net/sf/antcontrib/antlib.xml" />

 

用法如下:

<propertyreset name="chanel" value="${chanelname}"/>

 这样子就可以直接使用新值了。

本帖完整的示例:

 

<project name="test" default="testA" basedir="."> 
    
     <!--必须定义这个标签-->
    <taskdef resource="net/sf/antcontrib/antlib.xml" /> 
    
    <scriptdef name="propertyreset" language="javascript"
    		description="Allows to assign @{property} new value">
   		  <attribute name="name"/>
    		<attribute name="value"/>
        project.setProperty(attributes.get("name"), attributes.get("value"));
		</scriptdef>


 		<property name="nameA" value="A"/>
 		<!--重新定义property,不起作用-->
 		<property name="nameA" value="B"/>
 		
 		<var name="nameB" value="A"/>
 		<!--var可以随意设置值-->
 		<var name="nameB" value="B"/>
 		
 		
 		<property name="nameC" value="A"/>
 		<!--使用自定义的脚本重新设置值-->
 		<propertyreset name="nameC" value="B"/>
 		
    
    
   <target name='testA'> 
     <echo>${nameA}</echo>
     <echo>${nameB}</echo> 
     <echo>${nameC}</echo>  
   </target> 
</project>

 

 

分享到:
评论

相关推荐

    ant编译命令总结

    Apache Ant 编译命令总结 Apache Ant 是一个基于 Java 的生成工具,主要用来将源代码和其他输入文件转换为可执行文件的形式,或者转换为可安装的产品映像形式。Ant 在软件开发中扮演着重要角色,确保在每次生成期间...

    ant编译1.9版本

    在“ant编译1.9版本”中,我们关注的是Apache Ant 1.9.6这个特定版本的使用方法和特性。 Apache Ant 1.9.6发布于2015年,作为Ant 1.9系列的一个稳定版本,它提供了一系列改进和修复,以提高构建效率和稳定性。这个...

    ant脚本编译jar

    本文将深入探讨如何使用`Ant`脚本来编译并创建一个`JAR`文件,以此来理解`Ant`脚本的工作原理和实际应用。 `Ant`是Apache软件基金会开发的一款开源构建工具,它使用XML格式定义构建过程,具有高度可配置性和可扩展...

    ant编译依赖包

    在Ant中,`&lt;project&gt;`标签是构建文件的根元素,通常会包含项目的属性(`&lt;property&gt;`)和全局设置。例如,你可以定义源代码目录、输出目录以及jar包的名称。`&lt;target&gt;`标签则定义了一个个可执行的任务,它们之间可以...

    使用Ant编译打包

    - `ANT_HOME`:将值设置为你解压Ant的目录,例如`C:\ant`。 - `Path`:在已有的路径列表中添加`%ANT_HOME%\bin`,这使得你可以在任何目录下运行Ant命令。 **二、编写build.xml文件** Ant的核心是`build.xml`文件...

    ant编译java web工程build.xml配置文件

    介绍了如何通过ant进行java web工程的编译操作的详细配置

    Ant编译后的zookeeper源码

    在这个“Ant编译后的zookeeper源码”中,我们主要关注的是ZooKeeper 3.4.11版本,这是ZooKeeper的一个稳定版本,包含了丰富的功能和修复了许多已知的问题。Ant是Apache基金会的一个项目,它是一个Java构建工具,类似...

    ant编译java工程

    标题 "ant编译java工程" 涉及到的是使用Apache Ant工具来构建Java应用程序的过程。Apache Ant是一个基于XML的构建工具,它允许开发者通过声明式的方式定义项目构建任务,而不是采用程序化的方式。在Java开发中,Ant...

    ANT 编译最佳实践

    根据提供的文档内容,我们可以归纳和扩展出以下几个与ANT编译最佳实践相关的知识点: ### 1. 采用一致的编码规范 - **格式化XML构建文件**:虽然ANT并不关心XML文件是否格式美观,但为了提高可读性,建议对XML进行...

    Ant编译环境配置.pdf

    Ant编译环境配置 文章《使用ant编译之签名问题》的相关资料。主要讲一些Ant编译问题。

    ant编译以及格式

    4. **编译源代码**:Ant使用`&lt;javac&gt;`任务来编译Java源代码。你需要指定源代码目录、输出目录以及任何必要的编译器选项。例如: ```xml ${src.dir}" destdir="${build.dir}"&gt; **/*.jar"/&gt; ``` 这将...

    Ant 编译 多目录demo

    Ant的`&lt;property&gt;`元素用来设置属性值,`&lt;path&gt;`元素用来创建类路径。例如: ```xml &lt;property name="src.dir" value="src"/&gt; &lt;property name="build.dir" value="build"/&gt; ``` 这样,`src.dir`指向源码...

    使用ant编译生成flex的swc文件

    本文将深入探讨如何使用Ant工具来编译生成Flex的SWC文件,以此解决传统方式带来的繁琐和不便。 首先,让我们了解基本概念。`Ant`是一款由Apache软件基金会开发的Java构建工具,它基于XML编写构建脚本,可以跨平台...

    ant打包编译全套资料

    `&lt;target&gt;`标签用于定义一系列要执行的任务,`&lt;taskdef&gt;`用于引入自定义任务,`&lt;property&gt;`用于设置属性值,`&lt;copy&gt;`用于复制文件,`&lt;jar&gt;`用于创建JAR文件,`&lt;javac&gt;`用于编译Java源代码,`&lt;delete&gt;`用于删除文件或...

    ant编译staf插件

    ant编译staf插件

    Ant编译Tomcat源码、MyEclipse导入Tomcat源码、执行Tomcat源码启动Tomcat

    本篇将详细介绍如何使用Ant编译Tomcat源码,以及如何在MyEclipse环境中导入并运行Tomcat源码。 首先,Ant是Apache软件基金会开发的Java项目自动化构建工具,它能够执行编译、测试、打包等任务。在Apache Tomcat的...

    .Ant安装编译操作手册

    ### Ant安装编译操作手册知识点解析 #### 一、引言 - **编写目的**:本文档旨在指导软件发布人员如何正确安装与配置Apache Ant,解决在安装与使用过程中可能遇到的问题,确保能够顺利地使用Ant对Flex/Java工程项目...

    zilverline配置ant编译环境及简易安装

    "zilverline配置ant编译环境及简易安装" zilverline是一款开源搜索引擎,具有强大功能和完美的中文支持。为了让用户更方便地使用zilverline,我们需要配置ant编译环境并进行简易安装。下面是配置ant编译环境及简易...

    ant递归编译测试源码

    本篇将深入探讨`ant递归编译测试源码`中的关键概念和用法,包括`import`、`macrodef`、`subant`、`if`、`available`以及`dirname`。 1. `import`: Ant的`import`元素允许你在不同的构建文件之间共享任务和目标。这...

    ant编译java web的build.xml文件

    这段代码告诉Ant从`src/main/java`目录下获取源代码,编译后放入`build/classes`目录,并且类路径包含`lib`目录下的所有JAR文件。 4. **打包与归档** 使用`jar`任务可以创建JAR或WAR文件,这是Java Web应用的标准...

Global site tag (gtag.js) - Google Analytics