蚂蚁属性细微差别

每隔一段时间,我会想起Ant属性的一些细微差别 ,一旦忘记它们,在与Ant交互时会引起混乱。 特别是, Ant属性 通常是不可变的 (不包括Ant 1.8版本的 局部属性 ),并且在其首次设置时“永久”设置,这一事实可能会导致令人惊讶的结果。

《 蚂蚁手册 》的属性部分指出:“通常无法更改属性值,一旦设置了属性,大多数任务将不允许修改其值。” 该手册中有关“ 属性”任务的部分补充说:“属性是不可变的:谁先设置属性,谁会先冻结该属性,然后再进行其余构建; 它们绝对不是变量。”

属性定义的顺序会影响其设置。 通常,一旦设置了属性,以后就无法在同一构建文件或被调用的构建文件中重新定义,则无法更改其值。 此外,还有一组已经定义的属性,这些属性通常无法在Ant构建文件中重新定义。 这些包括Java System属性和内置的Ant属性 。

尽管在Ant构建文件中定义的属性不能覆盖默认的Ant内置属性或Java系统属性的值,但是通常可以使用Ant启动器上的-D选项设置这些属性名称的这些值。 但是,即使使用-D选项,也无法重置其中的少数。 例如,即使通过-D选项作为参数传递,也无法从Ant构建文件的路径和名称更改ant.file 。 当然,这可能也是一样,因为似乎没有充分的理由假装Ant构建文件不是实际的文件。

为了演示上述Ant属性解析的“规则”,可以使用以下简单的Ant构建文件。

build.xml在Ant中显示属性

<project name="Project" default="showProperties" basedir="."><property environment="env"/><target name="showProperties"><!-- Java System Properties --><echo message="java.home: ${java.home}" /><echo message="user.home: ${user.home}" /><!-- Custom Properties --><echo message="name.last: ${name.last}" /><echo message="name.first: ${name.first}" /><!-- Ant Built-in Properties --><echo message="ant.file: ${ant.file}" /><echo message="ant.version: ${ant.version}" /><echo message="ant.java.version: ${ant.java.version}" /></target></project>

在此示例中,有几个Java系统属性,几个自定义属性和一些Ant内置属性。 这些使我可以轻松地演示如何覆盖或不覆盖属性。 下一个屏幕快照显示了属性的“默认”设置,而不会被覆盖。 根本没有定义两个自定义变量,但是其他两个(Java系统和Ant内置属性)具有为Ant构建自动设置的值。

runningAntShowPropertiesTargetNoOverridden

下一个屏幕快照显示了尝试通过-D参数传递为构建中使用的属性提供值的尝试。 如示例所示,即使系统属性和Ant内置属性也可以使用-D属性设置覆盖,但ant.file属性不会被覆盖。

runningAntShowPropertiesDArgOverride

指定Ant文件中使用的属性的一种常用方法是使用Property任务在Ant构建文件中指定它们。 下一个代码清单将内部定义的属性添加到上面显示的文件中。

build.xml在内部定义属性

<project name="Project" default="showProperties" basedir="."><property environment="env"/><property name="user.home" value="/bin" /><property name="java.home" value="java" /><property name="name.last" value="Flintstone" /><property name="name.first" value="Fred" /><property name="ant.file" value="text.txt" /><property name="ant.version" value="1.8." /><property name="ant.java.version" value="6" /><target name="showProperties"><!-- Java System Properties --><echo message="java.home: ${java.home}" /><echo message="user.home: ${user.home}" /><!-- Custom Properties --><echo message="name.last: ${name.last}" /><echo message="name.first: ${name.first}" /><!-- Ant Built-in Properties --><echo message="ant.file: ${ant.file}" /><echo message="ant.version: ${ant.version}" /><echo message="ant.java.version: ${ant.java.version}" /></target></project>

下一个屏幕快照显示了运行此Ant文件时没有-D参数提供的任何属性。 请注意,内部规范成功设置的唯一属性是自定义属性。 Java系统属性和内置的Ant属性不受内部设置属性的影响。

runningAntShowPropertiesInternallyAttemptedOverride

通常,Ant的属性是不可变的,这具有很多优点。 但是,当仅仅因为在一个特定的Ant构建文件(或该构建文件引用的属性文件)中声明了一个属性而实际上是为该属性设置了该属性的值时,一定要谨慎。 如果该属性已在其他位置设置,则本地重新定义该属性的尝试只会错误地发布该属性的值,而该值实际上并不适用。

参考:来自JCG合作伙伴 Dustin Marx的Ant Properties Nuances , 来自“实际事件的启发”博客。

翻译自: https://www.javacodegeeks.com/2013/08/ant-properties-nuances.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

详解约瑟夫环问题及其相关的C语言算法实现约瑟夫环问题N个人围成一圈顺序编号&#xff0c;从1号开始按1、2、3......顺序报数&#xff0c;报p者退出圈外&#xff0c;其余的人再从1、2、3开始报数&#xff0c;报p的人再退出圈外&#xff0c;以此类推。请按退出顺序输出每个退出人…

《从零构建前后分离的web项目》准备 - 前端了解过关了吗?

前端基础架构和硬核介绍 技术栈的选择 首先我们构建前端架构需要对前端生态圈有一切了解&#xff0c;并且最好带有一定的技术前瞻性&#xff0c;好的技术架构可能日后会方便的扩展&#xff0c;减少重构的次数&#xff0c;即使重构也不需要大动干戈&#xff0c;我通常选型技术栈…

联想w540笔记本参数_2020年12月笔记本电脑推荐!联想、惠普、华为笔记本电脑推荐!18款高性价比笔记本电脑推荐!!!...

前言&#xff1a;笔记本电脑&#xff0c;主要分为三种&#xff1a;轻薄本<全能本<游戏本。轻薄本&#xff0c;又称办公笔记本电脑&#xff0c;因为轻薄方便携带&#xff0c;通常用于移动办公使用。全能本&#xff0c;就是把轻薄本的集显变成了小独显&#xff0c;增加了独…

【BZOJ 1098】办公楼(补图连通块个数,Bfs)

补图连通块个数这大概是一个套路吧&#xff0c;我之前没有见到过&#xff0c;想了好久都没有想出来QaQ 事实上这个做法本身就是一个朴素算法&#xff0c;但进行巧妙的实现&#xff0c;就可以分析出它的上界不会超过 $O(n m)$。 接下来介绍一下这个技巧&#xff1a; 很显然一个…

Spring MVC:资源

我从博客读者那里收到的最常见的问题之一是如何在Spring MVC的应用程序中使用CSS和javascript文件。 因此&#xff0c;这是撰写有关Spring MVC中资源使用情况的文章的好机会。 通常&#xff0c;我将使用基于Java的配置方法。 如今&#xff0c;很难想象没有CSS和JavaScript文件…

map

头文件 首先要引入头文件 #include <map> . 并使用命名空间 using namespace std; 1、插入元素 用pair 或者 make_pair 均可&#xff0c;map键值不能重复。 map1.insert(pair<int,string>(123,"aaaaa")); //pair map1.insert(make_pair<int,string&…

c语言读文件空格间隔,c语言文件流实现按单个词读取(以空格、分号等作间隔)...

c语言文件流实现按词读取(以空格、分号等作间隔)1.基本描述在之前的作业中&#xff0c;认真编写代码&#xff0c;从中发现不少知识积累上的欠缺。编程中使用到的c语言文件读取&#xff0c;要求是按照获取到一个完整的词&#xff0c;并对其进行处理。写有java或c语言源程序的.tx…

山东专升本access知识点_全国各省份每年的专升本考试大纲啥时候公布?考纲公布之前你该做什么?...

?星标/置顶专升本招考下一个上岸的就是你最近小编在专升本招考后台收到很多同学的留言&#xff0c;大多同学都是看到好多省都公布了专升本考试政策和大纲&#xff0c;却迟迟不见自己所在的省份出&#xff0c;于是火急火燎地找到小编来问&#xff1a;XX省的考试大纲到底啥时候出…

2018091-2 博客作业

此作业的要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2101 1.建博客 在 cnblogs.com (博客园)建账号。博客地址&#xff1a;https://www.cnblogs.com/LY0503/ 2. 博客作业 &#xff08;1&#xff09;回想一下你曾经对计算机专业的畅想 当初你是如何做出选择…

观点|蚂蚁金服玉伯:我们是如何从前端技术进化到体验科技的?

小蚂蚁说&#xff1a;王保平&#xff0c;花名玉伯。熟悉前端和SeaJS的人一定对这个名字不陌生。作为前端领域的一枚大大大牛&#xff0c;他现在担任蚂蚁金服体验技术部负责人。本文&#xff0c;他分享了他从前端一路进阶升级到体验科技的个人思考&#xff0c;并详细介绍了体验科…

excel 电阻并联计算_电路分析基础(5)-关于电阻,有些话我还是要说一说

电阻定义&#xff1a;导体对电流的阻碍作用就叫该导体的电阻。不同的导体&#xff0c;电阻一般不同&#xff0c;电阻是导体本身的一种性质。定义式如下&#xff1a;因此&#xff0c;我们应该清楚了欧姆定律的本质到底是什么&#xff0c;为啥电阻跟电压和电流没有关系&#xff0…

针对新手的Java EE7和Maven项目–第2部分–为我们的应用程序定义一场简单的战争...

从第一部分恢复 第1部分 我们刚刚定义了父 pom。 一种特殊的pom类型&#xff0c;它最终定义了我们的应用程序将要使用的库。 它还配置了所有用于打包我们应用程序每个模块的Maven工具。 您可以在此处 签出 -1部分示例代码。 因此&#xff0c;到目前为止&#xff0c;在将要开发…

postman实现从response headers中获取cookie,并将其设置为环境变量

1.最近在学习postman的使用方法,为了保证后续模块操作&#xff0c;必须在登录时获取的session值&#xff0c;并将其设置为环境变量&#xff0c;session的位置处于response headers里面返回的set-cookie参数&#xff0c;并且将set-cookie中的session通过split方法截取出来. 写法…

c语言如何在文件中间插入数据,急求如何将下列C语言程序数据存储到文件中?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中。#include int n0;int rest[7][7]; //全局声明,以供全局调用int main(){void perm(int list[],int ,int );int …

010 pandas的DataFrame

一&#xff1a;创建 1.通过二维数组进行创建 2.取值 取列,取位置的值 3.切片取值 这个和上面的有些不同&#xff0c;这里先取行&#xff0c;再取列 4.设定列索引 这里使用的行索引与上面不同。 5.通过字典的方式创建 6.索引 包含行索引&#xff0c;与列索引 7.修改列索引 转载于…

unity烘培单个物体_Unity可编程渲染管线(SRP)教程:二、自定义着色器

本文翻译自Catlike Coding&#xff0c;原作者&#xff1a;Jasper Flick。本文经原作者授权&#xff0c;转载请说明出处。原文链接在下&#xff1a;https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/custom-shaders/​catlikecoding.com本章内容如下&…

线程跳动

总览 线程jiggler是一个简单的测试框架&#xff0c;用于执行代码以查找线程问题。 它通过在运行时修改字节码类的类来工作&#xff0c;以在指令之间插入Thread.yield&#xff08;&#xff09;调用&#xff0c;从而“微动”线程。 这极大地增加了发现线程问题的可能性&#xff0…

一套比较完整的前端技术选型,需要规整哪些东西,你知道不?

1. 背景及现状 随着前端开发复杂度的日益增加&#xff0c;各种优秀的组件框架也遍地开花。同时&#xff0c;我们面临业务规模的快速发展和工程师团队的不断扩张&#xff0c;如何解决资源整合、模块开发、项目部署、性能优化等问题势在必行。 2. 目标 根据背景和现状的分析&a…

asp.net core2.0里的Nlog

Microsoft.Extensions.Logging&#xff0c;到了Version2.0.0.0&#xff0c;没了AddNlog() ? ——我找不到输出的日志&#xff01; 。。。。。经过一番百度 step1:添加个Provider 这样&#xff0c;在Startup里Configure实现一个ILoger 如果在controller里使用&#xff1f;——…

android 回退函数,详解React Native监听Android回退按键与程序化退出应用

详解React Native监听Android回退按键与程序化退出应用发布时间&#xff1a;2020-09-29 09:25:52来源&#xff1a;脚本之家阅读&#xff1a;137作者&#xff1a;lqh详解React Native监听Android回退按键与程序化退出应用前言我们知道Android回退按键&#xff0c;会控制页面返回…