- 浏览: 778782 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (256)
- ssh (18)
- webservice (8)
- java基础 (38)
- j2EE方方面面 (17)
- 随意涂鸭!呵呵 (2)
- 数据库 (22)
- work (10)
- XML与XML解析 (9)
- 测试 (2)
- sso (1)
- ldap (6)
- java 模板技术 (4)
- 版本管理 (1)
- 每日小点滴 (26)
- javascript (26)
- Jakarta Commons (2)
- css (6)
- 设计 (3)
- Eclipse插件开发 (3)
- BAP (3)
- web控件 (2)
- java加密解密 (4)
- 调优 (6)
- 界面技术 (3)
- java多线程 (6)
- 互联网 (2)
- 日志管理 (4)
- java调度 (3)
- rest (0)
- Python (2)
- mobile (2)
- 2016的故事 (4)
- Docker (1)
- NOSQL_Hadoop (0)
最新评论
-
promiseloney:
这个女程序员厉害了。。。
JVM调优:GC 参数 -
zxjlwt:
可以通过WebService上传一个文件吗?素人派http:/ ...
webservice传送XML大小估算 -
liaoshaoyang:
写的不错嘛 可以做参考
权限管理设计一 -
aaaaaaaaabaas:
谢谢,对我有帮助
Apache Commons Configuration使用入门 -
Jack_Wilshere:
com.smartdot.pdm.business.corp. ...
java导出txt
一、为啥要用Ant-Contrib ?
因为要做一个循环,用户配置两个或多个工程名后,这两个或多个工程有相同的工程结构,但是是属于不同的项目,如果把这个两个项目的工程整合成一个,写一个build,自动的把这几个工程进行合并。
看了一下ant,没有java中类似于下面代码的功能,所以找到Ant-Contrib,听说这个东东能帮我解决问题。
String array[]={"aa","bb","cc"}; for (int i = 0; i < array.length; i++) { method(array[0]);//当然对于build来说,这里应该是target }
二、开始使用
找到http://ant-contrib.sourceforge.net/,上面说得很清楚了,使用Ant-Contrib之前应该先安装ant,而且Ant-Contrib 中的大部分task需要ant1.5或者更高版本。先看一下我的ant版本,我用得是Eclipse中集成的1.6.5ant,"Window→Preferences→Ant→Runtime",如下图,在classpath中可以看到我的ant 版本是1.6.5。
先在网上下载一个ant-contrib-1.0b3.jar,我已经上传到附件中,
然后在ant的build.xml中添加下面的代码:
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE project [ <!ENTITY build-properties SYSTEM "build-properties.xml"> ]> <project name="DCI.XXX" basedir="." default="build-many-project"> <!-- ============================================================== --> <!-- Compile Settings --> <!-- ============================================================== --> <property name="build.debug" value="on" /> <property name="build.debuglevel" value="lines,vars,source" /> <property name="build.optimize" value="off" /> <property name="build.deprecation" value="off" /> <property name="build.source" value="1.4" /> <property name="workspace.dir" location="../../../" /> <property name="target.project.dir" location="../../" /> <path id="ant.contrib.lib"> <fileset dir="lib"> <include name="**/*jar" /> </fileset> </path> <taskdef resource="net/sf/antcontrib/antcontrib.properties"> <classpath> <path refid="ant.contrib.lib" /> </classpath> </taskdef> <taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach"> <classpath> <path refid="ant.contrib.lib" /> </classpath> </taskdef> <!-- ============================================================== --> <!-- 循环构建每一个工程 --> <!-- ============================================================== --> <target name="build-many-project"> <foreach target="build-one-project" param="projectName" list="cip;hnppb_bap" delimiter=";" /> </target> <!-- ============================================================== --> <!-- 构建每一个工程 --> <!-- ============================================================== --> <target name="build-one-project"> <!--把java文件拷贝到src/java目录--> <copy todir="${target.project.dir}/src/java" overwrite="true"> <fileset dir="${workspace.dir}/${projectName}/src/java"> <include name="**/*" /> </fileset> </copy> </target> </project>
上面的代码可以看出,我只使用了foreach这个功能,还有if等别的功能,大家可以使用。
三、确实方便了很多,根据客户配置的工程名,处理每个工程,但是后来又遇到一个问题,就是copy时,因为是把两个或者多个工程合并到一个工程,我希望重名的文件能够给出提示,让用户手工处理,ant 的copy task太简单了,只能配置是否覆盖,所以我确定扩展ant,即自己定义task ,ant的架构设计得真是优秀,扩展起来太方便了,只需要建一个继承了Task类的类,打包成jar后,在xml配置文件中使用 taskdef 导入即可,具体来说就是以下几步:
1、建一个工程:
在Eclipse下的ant jar包拷到lib 下,设置build path, 这样就不会报编译错误。
2、构建BuildManyProject类
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class BuildManyProject extends Task { public void execute() throws BuildException { System.out.println("俺会输出来的"); } }
3、打包为jar,将class文件拷到f盘,然后使用
cmd
f: (进入f盘)
jar -cvf buildmatic.jar com\ (打包为buildmatic.jar)
将buildmatic.jar拷贝到build.xml文件所以工程的lib目录下
4、使用:在 build.xml中加入下面的代码
<path id="ant.buildmatic.lib"> <fileset dir="lib"> <include name="**/buildmatic.jar" /> </fileset> </path> <taskdef name="buildManyProject" classname="com.smartdor.bap.buildmatic.BuildManyProject"> <classpath> <path refid="ant.buildmatic.lib" /> </classpath> </taskdef> <buildManyProject/>
OK,,运行的时候会出现:"俺会输出来的"
总结:ant 里定义了一结构建工程常用的命令,例如copy、javac等,ant-contrib对ant的任务进行了扩展,提供了条件、循环判断,但是如果有时候这些扩展还是不满足我们的日常需求,那只能自己扩展了,有必要研究一下ant 架构的设计,看看怎么做到这么灵活的可插拔的,end.
发表评论
-
tomcat quartz 被触发两次
2013-01-05 17:45 1552tomcat服务器中自启动导致quartz定时被触发两次 ... -
c:forEach 取 map的值
2011-11-15 13:31 3649<c:forEach var=& ... -
servlce与filter的url-pattern介绍
2011-10-14 09:20 1718url-pattern格式: 1、 以”/’开头和以”/*” ... -
Ehcache学习二:Ehcache的配置文件介绍
2011-10-02 16:43 5427<ehcache xmlns:xsi="htt ... -
Ehcache学习一:JDBC caching
2011-10-02 16:20 3884Ehcache很容易加入到已经使用的JDBC代码中,一般在两种 ... -
JSP页面取当前日期 oracle导入导出 branch与tag
2009-02-19 09:33 1518<%=new java.text.SimpleDateF ... -
J2EE开源项目
2008-06-23 17:02 3971主要就我所了解的J2 ... -
EL表达式
2008-05-14 13:10 5326EL表達式2008-01-16 12:49 一、EL简介 1. ... -
EAI简单介绍
2008-02-27 10:54 1883什么是EAI(enterprise application i ... -
先判断对象是否为NULL再进行操作
2007-12-10 09:14 2421<% Boolean isErr = false ... -
给JSP页面加过滤器
2007-12-10 09:09 3696很简单的一个功能,如果用户没有登录之前访问其他页面时转到登录页 ... -
《精通J2EE网络编程》中讲的JNDI 6.3总结
2007-11-28 16:30 14116.3 小结 JNDI(命名和目录接口)是一个为Java应用 ... -
《精通J2EE网络编程》中讲的JNDI 6.2 使用JNDI
2007-11-28 16:24 15956.2 使用JNDI 6.2.1 JNDI服务提供者 不使 ... -
《精通J2EE网络编程》中讲的JNDI 6.1 什么是JNDI
2007-11-28 16:22 14966.1 什么是JNDI Java命名和目录接口(the J ... -
jndi
2007-11-28 15:43 1570JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程 ... -
j2ee 介绍
2007-11-28 10:40 1797J2EE Java2平台企业版(Jav ...
相关推荐
该程序为Ant的扩展任务,在拷贝文本格式的文件的同时替换文件中的Ant表达式,类似于 ${property.name},属性值来自于Ant脚本加载的属性文件,如果没有属性文件中没有定义相关属性,那么保留原来的表达式;...
总结来说,Ant是一个强大的Java项目构建工具,它通过XML配置文件实现自动化构建,适用于各种复杂项目,并具有高度的可配置性和可扩展性。在软件开发的生命周期中,Ant起到了确保代码质量、简化部署流程和促进团队...
Ant是Apache软件基金会下的一个项目,它是一款Java构建工具,主要负责自动化构建Java项目,如编译源代码、运行测试、打包和部署等任务。在Java开发领域,Ant以其灵活性和可配置性著称,是许多大型项目的核心构建工具...
Ant的设计理念是跨平台性和可扩展性,这两个特性使其在众多构建工具中脱颖而出。 Ant的跨平台性源于其基于Java的实现。这意味着无论操作系统环境如何,只要安装了Java运行环境,Ant就能工作。通过Java编写自定义...
总结来说,Ant是一个强大的构建工具,其灵活性和可扩展性使其成为Java项目中不可或缺的一部分。通过正确配置`build.xml`和相关的属性文件,我们可以创建一个高效且易于维护的构建系统,实现“一次配置,稍改即用”的...
在IT行业中,Ant是Apache软件基金会的一个开源项目,它是一个基于Java的构建工具,主要用于管理Java项目的构建过程。Ant以其灵活性和可配置性而受到广大开发者喜爱,它使用XML来描述构建过程,使得构建脚本易于理解...
Ant提供了大量的内置任务,并且可以通过扩展自定义任务。 4. **属性(Properties)**:属性用于存储配置信息,如路径、版本号等,可以在整个构建文件中引用。它们可以通过命令行参数或在构建文件中设置。 5. **...
并且由于是Java的一部分,ANT可以访问Java类库,提供强大的扩展性。 7. **示例分析**:文件“小学館日本大百科.7z.001”可能是一个压缩文件,可能包含了示例的ANT构建脚本或其他相关资源。不过,由于无法直接查看...
"ant-contrib-1.0b2"是Ant的一个扩展库,名为Ant Contrib,它提供了一系列额外的任务和数据类型,扩展了Ant的原生功能。例如,它包含了用于流程控制的任务(如for、if、foreach)、数据库操作任务、Windows批处理...
用户可以通过扩展Ant的任务或者编写自定义任务来满足特定需求。 在"apache-ant-1.6.0-bin.zip"这个压缩包中,通常会包含以下组件: 1. `bin`目录:包含了Ant的可执行脚本,如`ant`和`ant.bat`,分别用于Unix/Linux...
标签"java"表明Ant主要与Java开发相关,但Ant也适用于其他语言的项目,因为它的任务系统可以扩展。通过使用Ant贡献的库或自定义任务,你可以处理C++、Python等语言的构建需求。 Ant的一个重要特性是依赖性管理。它...
2. ant-junit.jar:此文件扩展了Ant的功能,使其能够集成和运行JUnit测试。JUnit是Java编程语言中的一款流行的单元测试框架。通过ant-junit.jar,开发者可以在Ant构建脚本中轻松地执行单元测试,收集测试结果,甚至...
Ant Contrib If Jar包是Apache Ant构建工具的一个扩展库,它为Ant任务提供了条件语句的支持,使得构建脚本能够根据特定条件执行或跳过某些任务。Ant是一个Java库和命令行工具,其任务是驱动构建过程,常用于自动化...
使用 Ant 的一大优势在于它的扩展性。除了内置任务,开发者可以通过实现 `Task` 接口创建自己的任务,这使得 Ant 能够处理几乎任何类型的构建需求。XML 配置文件的结构清晰,使得多人协作变得容易,也方便自动化工具...
Apache Ant是一个专门为Java项目设计的自动化构建工具,它的出现是为了满足开发者在跨平台项目构建时遇到的种种问题。在1998年,当时的构建工具如GNUMake、批处理文件和shell脚本都不能很好地支持跨平台的构建,于是...
- **ANT与MyEclipse的区别**:ANT是一种独立的构建工具,而MyEclipse则是一款集成开发环境(IDE),两者的主要区别在于作用范围。MyEclipse提供了一个全面的开发环境,包括代码编辑、调试等功能;而ANT专注于构建...
Ant的强大之处在于其插件系统,允许扩展以支持更多的任务和功能。通过引入额外的Ant任务库,你可以调用各种工具,如数据库管理工具、版本控制系统,甚至执行复杂的自动化流程。 总的来说,Ant是一个强大的自动化...
5. **Ant的扩展性** - **自定义任务**:可以通过实现Ant Task接口创建自己的任务,以满足特定需求。 - **第三方插件**:许多第三方库提供了Ant任务,如Maven的Ant Tasks,方便在Ant中调用Maven的功能。 6. **实际...
总的来说,Ant是一个强大且灵活的构建工具,它的XML配置文件和Java扩展机制确保了构建过程的可读性和可移植性。通过定义和组织任务目标,开发者能够轻松地自动化Java项目的构建过程,无论项目大小或复杂程度。尽管...
Ant是Apache软件基金会的一个开放源码项目,是一个基于Java的构建工具,它的设计...Ant的简单性和可扩展性使其成为Java开发中的一个强大工具,无论你是初次接触还是希望替换现有的构建系统,Ant都是值得考虑的选择。