- 浏览: 1340987 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
Ant
给Ant脚本传递参数的最佳实践
覆盖内部参数
覆盖property属性的值
多个参数
给ant传递多个参数
传递多个property参数
Ant是一个Make Tool,主要用于代码的编译,构建。当然,也有很多Ant爱好者开发了很多外部任务扩展了它的功能。它无界面,跨平台的特性,正好适用于软件开发人员。Ant已经成为软件开发人员开发过程中的一道利器。
在项目开发的过程中,Ant除了会被用来进行编译,打包,生成各种报告外,还可以被用来写开发中用到的工具。
当然了,既然是开发中用到,参数的传递也少不了了。那么,怎么样做才是更好的方法呢?
预备知识
1. Ant脚本中有<property>属性,可以用来设置值。
但是一定要了解它的作用域和顺序。
直接在<project>节点下的<property>所设置的值,所有的<target>都可以使用。而<target>节点下的<property>只在本<target>内部有效。
<target>内部定义的<property>必须位于使用它的代码之前,因为Ant是边解析配置文件边执行的。如果定义的部 分放到了使用的部分之后,那么使用的部分就会认为没有定义。也就是说,假如A和B是两段使用到了<property>的部分,而 把<property>放到A和B之间的话,那么A不能使用这个<property>,而B则可以使用。但 是<project>节点下的<property>则没有这个问题,Ant优先读取完所有<property>属性 之后,才会去执行具体的<target>。
2. Ant中的<property>除了可以使用[name/value,name/location]这样的键值对外,还可以使用属性[file]加载properties文件。
相比较而言,properties文件比xml更容易让普通使用者接受。
3. 在使用命令执行Ant脚本时,可以通过"-Dname=value"的方式向Ant脚本传递参数。
如果在执行命令的时候,使用了"ant -f xxxx.xml -Dbuild.name =helloProject"之类的命令的话,那么Ant脚本中所有位置都可以使用${build.name }来使用这个属性的值。
这一种方式,等同于<project>下的<property>。
4. Ant脚本中的<property>是有优先级区分的。
如果在<project>有两个同名的<property>,Ant只读取第一个定义的值,不管是[name/value; name/location]还是[file]的定义方式。
通过上面3中介绍的"-Dname=value"的方式定义的值的优先级比<project>下的<property>的优先级高。
最佳实践
1. 把所有需要用户传递的参数放到一个properties文件中去,并把定义部分<property file="build.properties">放到Ant脚本中的最前面。
2. 不要设计太多的参数。工具本来就是要减轻用户负担的,如果有太多的参数需要设置的话,任谁也要考虑一下使用成本的。
3. 如果参数只需要设置一次,以后不需要变更的话,那么算是最好的了。如果每一次执行都要传递不同的参数的话,可以考虑提供针对特定OS的脚本,使 用"-Dname=value"来简化使用方法,比如说Windows的bat,linux/unix的sh文件等。不过,写特定OS的脚本是一种不推荐 的方式,这样就把Ant本来拥有的跨平台能力给抹去了。
例子:
可以这样执行,并给build.xml传递参数,覆盖原有默认值。
nohup ant -D dateStr =2010-12-25 &
<project name="Yingxiao" default="all">
<target name="setProperties" description="setup the common properties">
<property name="src.dir" value="src"/>
<property name="images.dir" value="images"/>
<property name="classes.dir" value="classes"/>
<property name="lib.dir" value="lib"/>
<property name="backup.dir" value="bak"/>
<property name="jar.file" value="${lib.dir}/Yingxiao.jar"/>
<property name="dateStr
">2010-12-20
"/>
<property name="className" value="null"/>
</target>
... ...
<target name="MainProcess" depends="compile" description="java">
<java classname="com.wangcheng.xiaoai.yingxiao.main.MainProcess"
fork="true" maxmemory="2000m">
<arg value="dateStr
"/>
<classpath>
<pathelement location="${classes.dir}"/>
<pathelement path=""/>
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</classpath>
</java>
</target>
</project>
同理,如果传递多个参数呢?需要多个-D
nohup ant -D dateStr =2010-12-25 -DdeleteHis=true &
原理:
本质上,-D参数传递的是java命令中-D传递的参数。
在命令提示符下输入命令java,可以看到-D用法提示,
#java
-D<name>=<value>
set a system property
参考:
http://blog.csdn.net/superbeck/archive/2009/07/18/4359870.aspx
。
。
。
。
。
。
发表评论
-
如何在IDEA单元测试中使用Scanner获取输入内容
2024-10-25 21:19 203如何在IDEA单元测试中使用Scanner获取输入内容 = ... -
java播放音频声音mp3等
2024-05-22 15:16 577java播放音频声音mp3等 = = = 这个方法 ... -
打包Java程序为.exe文件
2023-09-27 16:25 531= = = 打包Java程序为.exe文件 fro ... -
Java怎么生成exe可执行文件【图文讲解】
2023-09-27 16:21 519= 开发的工具,让客户体验一下再说。此时又不想发源码,怕 ... -
Java8 List集合Stream流方法操作详解
2023-09-27 16:02 145= = = from: https://zhuanl ... -
Java8 List集合Stream流方法操作详解
2023-09-27 15:59 710= = = from: https://zhuan ... -
Java8 List集合Stream流方法操作详解
2023-09-27 15:56 99= = = from: https://zhuanl ... -
【原创】Cannot create property=xxx for JavaBean=【lombok 和 yaml包 混合报错】
2023-02-04 23:31 1196= = = 问题: 同时使用lombok 和 ... -
【摘】Java文档注释用法+JavaDoc的使用详解
2022-09-12 16:32 584= = 节约重复注释 使用@inheritDo ... -
【朝花夕拾】java内部类,原理,使用
2022-08-09 22:52 493= 碰到类似问题,多读《thinking in java ... -
【拾遗】java数组copy拷贝复制的工具类方法
2022-06-11 21:20 697= 对工具类来说,copyOfRange 最好用。 这 ... -
利用Httpclient下载图片,java不用httpClient下载图片
2022-05-30 22:25 551= = = from:https://blog.csd ... -
为什么要使用lombok?
2022-04-04 20:46 501= = = 参考:https://blog.csd ... -
朝花夕拾:java-向上转型中变量覆盖要小心使用_继承过程中Java子类父类属性的覆盖问题
2022-01-13 17:31 464==== 现在的代码结构设计的复杂起来了,为了后来人编写 ... -
【Mysql数据库】Cause: java.sql.SQLException: The table 'xxx' is full
2022-01-04 17:03 1619= 本地开发测试,怎 ... -
JAVA工具类学习-java 两个list 交集 并集 差集 去重复并集
2021-09-10 16:17 930= = = List<String> ... -
java汉字判断,中文符号判断,中文标点符号判断
2021-09-02 19:07 1295=== = = 一、判断中文汉字 st ... -
velocity的模板笔记总结文档-方便查阅
2020-04-28 14:41 439= 最好把这几个官网文档看了: 官网官方文档refer ... -
mjson:像python和ruby一样好用的java类库操作json_js
2020-04-17 20:54 596= = = JSON Library for Jav ... -
关于idea2019.2-2019.3版本中文控制台乱码问题,tomcat7-tomcat8乱码
2020-04-04 23:20 540= 1 idea2019.2-2019.3版本中文控制台乱 ...
相关推荐
总结起来,《10_ant_基于j2se的综合实战项目_01》的学习内容涵盖了Ant工具的基本使用、构建脚本编写、任务管理和测试集成等方面,旨在帮助开发者熟练掌握Ant在J2SE项目中的实践应用,提升项目构建的自动化水平。...
此外,JUnit 4支持参数化测试和异常测试,增强了测试的灵活性和覆盖率。 将Ant与JUnit结合,可以实现自动化测试的集成。在Ant构建脚本中,可以使用junit任务来调用JUnit测试。例如,以下是一个简单的Ant配置示例: ...
TeamCity支持传递系统参数、环境变量和项目参数到Ant脚本,这样你可以根据需要动态调整构建行为。例如,你可以设置一个参数来决定是否启用代码覆盖率报告的生成。 7. **日志和报告** TeamCity会收集Ant脚本运行时...
Ant支持使用属性来存储和传递值,这些属性可以在整个build.xml文件中使用。例如,可以定义一个属性`src.dir`来指定源代码目录,然后在多个任务中引用这个属性,简化配置。 五、条件语句与循环 Ant提供了条件语句...
标题“Actividad_7_Hormiga-20201226T014255Z-001_ant_FPGAVHDL_”指的是一个与“蚂蚁(Ant)”项目相关的活动,该活动可能是一个编程挑战或课程作业,时间戳显示它创建于2020年12月26日的凌晨。标签“ant FPGAVHDL...
属性可以在build.xml中定义,也可以通过命令行参数传递。 4. **条件(Conditions)**:Ant提供了条件语句,使得构建过程可以根据特定条件进行分支。例如,可以检查某个文件是否存在,或者判断当前操作系统类型。 5...
对于【ANT】_Simple_v1.8.4这个压缩包,里面可能包含了Ant的安装文件、示例脚本、文档以及其他相关资源。用户可以解压文件,按照文档指示安装和配置Ant,然后使用它来构建Java项目。安装过程中可能需要设置环境变量...
5. **属性**:Ant使用属性来存储值,这些值可以在整个构建脚本中使用和传递。`property`任务用于定义和修改属性。 6. **依赖管理**:Ant支持依赖性管理,通过`<depend>`任务可以检查并更新类文件,确保总是使用最新...
任务可以通过属性(properties)来传递参数,这些属性可以在脚本中设置,也可以在命令行中动态指定。 三、ANT任务与标签 1. `<project>`:ANT脚本的根元素,包含了整个构建过程。 2. `<target>`:定义了一个具体的...
通过调用Java命令行并传递Ant的相关参数,我们可以直接在命令行环境中执行构建任务,无需每次都启动Ant。例如,`build.bat` 可能包含了以下内容: ```batch @echo off java -jar %ANT_HOME%\lib\ant-launcher.jar -...
脚本将遍历这个数组,每次迭代都将当前市场的标识传递给第一步中设计的方法,从而实现对不同市场的分别编译和打包。完成编译后,还需进行应用签名,以确保应用的完整性和安全性。 #### 技术要点详述 - **Ant简介**...
- **属性与变量**:Ant支持属性设置,类似于环境变量,可以用来传递构建参数或配置信息。通过定义属性,可以实现构建过程的参数化,使得构建脚本更具通用性和可重用性。 #### 深入实践:Ant的高级功能与定制化 ...
最后,通过`<arg>`标签传递参数`/c startup.bat`,执行Tomcat的启动脚本。 #### 结束信息 构建脚本最后再次使用`<echo>`标签输出信息“ENDSTARTUPTOMCAT5”,表明Tomcat服务器启动过程结束。 ### 总结 通过上述...
Ant还允许使用`<property>`元素来设置和使用属性,这些属性可以在整个脚本中引用,提供了一种灵活的方式来传递配置值: ```xml ${src.dir}" destdir="${build.dir}"/> ``` 在这个例子中,`${src.dir}`和`${build....
Ant脚本中的条件和属性也是关键部分。属性(`property`)允许设置和传递值,它们可以用来动态地改变构建过程。例如,你可以定义一个属性来指定源代码目录,然后在其他任务中引用这个属性。条件(`if`、`unless`等)...
3. **宏定义和参数化**:使用`macrodef`可以定义自定义任务,通过`param`元素传递参数,使构建脚本更加灵活和复用性更强。 五、最佳实践与技巧 1. **构建文件结构化**:将构建逻辑按照功能模块化,每个模块对应一...
总之,Apache Ant 1.8.1的源代码是一个宝贵的教育资源,它不仅展示了Java构建工具的核心设计,也为开发者提供了实践和提升自身技能的机会。通过深入研究,开发者可以更好地利用Ant来管理和自动化复杂的项目构建流程...
在这里,`list`属性定义了一个以逗号分隔的值列表,`param`属性定义了每次迭代时传递给内部任务的参数名。`sequential`元素内的任务将在每次迭代中执行,其中`itemName`会被设置为当前列表中的项。 除了`for`宏,`...