- 浏览: 573683 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
冰糖雪栗:
...
使用jstack分析cpu消耗过高的问题 -
hongyuan19:
ron.luo 写道我也有此疑问,求解。使用Intercept ...
spring mvc获取header -
ron.luo:
我也有此疑问,求解。
spring mvc获取header -
wzhj0528:
vi /etc/selinux/config SELINUX ...
ssh使用公钥授权不通过的问题解决 -
xuhuan1108:
请问请问一下:使用Spring MVC 怎么预先统一处理所有 ...
spring mvc获取header
代码的重复是件麻烦事,配置文件的重复也让人不爽。当配置文件出现bad smell时,也要着手进行重构了。
当在CruiseControl(以下简称cc)监控多个项目时,config.xml很容易出现大堆的重复配置。比如我的:
当存在多个project时,由于每个project的处理过程是一模一样的,因此配置写了重复的n次。使用plugin定义模板来改变:
有更多的project都只需添加一句话而已。plugin的使用可参考官方http://cruisecontrol.sourceforge.net/main/plugins.html。其中name属性如果是cc默认定义的,可以不加classname属性,比如这里的name="project"。
由于cc经常和ant配合使用,ant也容易出现大堆的重复配置。比如我的:
cc.xml
dd.xml
cc.xml和dd.xml几乎一模一样,只是project name不同而已。使用import task来改变:
先定义公共的xml,这里为import.xml:
在cc.xml和dd.xml中import进来即可:
cc.xml
dd.xml
需要注意的是,import.xml中的project name是没用的,${ant.project.name}不是指该值,而是指最上层引用的xml的project name。比如cc.xml引用了import.xml,那么${ant.project.name}是指cc.xml的project name。import task有点复制代码的味道。
参考:
http://www.blogjava.net/chelsea/archive/2008/03/06/184374.html
http://cruisecontrol.sourceforge.net/main/plugins.html
http://ant.apache.org/manual/index.html
当在CruiseControl(以下简称cc)监控多个项目时,config.xml很容易出现大堆的重复配置。比如我的:
<cruisecontrol> <property file="common.properties" /> <property name="anthome" value="apache-ant-1.7.0" /> <project name="cc"> <listeners> <currentbuildstatuslistener file="logs/${project.name}/status.txt"/> </listeners> <modificationset quietperiod="30"> <svn RepositoryLocation="${svnloc}/${project.name}" username="${user}" password="${password}"/> </modificationset> <schedule interval="20"> <ant anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="update"/> </schedule> <publishers> <onsuccess> <antpublisher anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="deploy"/> </onsuccess> </publishers> </project> <project name="dd"> <listeners> <currentbuildstatuslistener file="logs/${project.name}/status.txt"/> </listeners> <modificationset quietperiod="30"> <svn RepositoryLocation="${svnloc}/${project.name}" username="${user}" password="${password}"/> </modificationset> <schedule interval="20"> <ant anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="update"/> </schedule> <publishers> <onsuccess> <antpublisher anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="deploy"/> </onsuccess> </publishers> </project> </cruisecontrol>
当存在多个project时,由于每个project的处理过程是一模一样的,因此配置写了重复的n次。使用plugin定义模板来改变:
<cruisecontrol> <property file="common.properties" /> <property name="anthome" value="apache-ant-1.7.0" /> <!-- template --> <plugin name="project"> <listeners> <currentbuildstatuslistener file="logs/${project.name}/status.txt"/> </listeners> <!-- monitoring the svn change --> <modificationset quietperiod="30"> <svn RepositoryLocation="${svnloc}/${project.name}" username="${user}" password="${password}"/> </modificationset> <!-- task --> <schedule interval="20"> <ant anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="update"/> </schedule> <!-- publish --> <publishers> <onsuccess> <antpublisher anthome="${anthome}" buildfile="buildfiles/${project.name}.xml" target="deploy"/> </onsuccess> </publishers> </plugin> <!-- 1..n project --> <project name="cc"/> <project name="dd"/> </cruisecontrol>
有更多的project都只需添加一句话而已。plugin的使用可参考官方http://cruisecontrol.sourceforge.net/main/plugins.html。其中name属性如果是cc默认定义的,可以不加classname属性,比如这里的name="project"。
由于cc经常和ant配合使用,ant也容易出现大堆的重复配置。比如我的:
cc.xml
<project name="cc" basedir="."> <property file="../common.properties" /> <property name="project" value="../projects/${ant.project.name}" /> <property name="tomcat" value="../apache-tomcat-5.5.26/webapps" /> <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" /> <target name="checkout"> <svn username="${user}" password="${password}"> <checkout url="${svnloc}/${ant.project.name}" destPath="${project}"/> </svn> </target> <target name="update"> <svn username="${user}" password="${password}"> <update dir="${project}"/> </svn> <!-- war --> <ant dir="${project}"/> </target> <target name="deploy"> <copy todir="${tomcat}"> <fileset dir="${project}/war"/> </copy> </target> </project>
dd.xml
<project name="dd" basedir="."> <property file="../common.properties" /> <property name="project" value="../projects/${ant.project.name}" /> <property name="tomcat" value="../apache-tomcat-5.5.26/webapps" /> <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" /> <target name="checkout"> <svn username="${user}" password="${password}"> <checkout url="${svnloc}/${ant.project.name}" destPath="${project}"/> </svn> </target> <target name="update"> <svn username="${user}" password="${password}"> <update dir="${project}"/> </svn> <!-- war --> <ant dir="${project}"/> </target> <target name="deploy"> <copy todir="${tomcat}"> <fileset dir="${project}/war"/> </copy> </target> </project>
cc.xml和dd.xml几乎一模一样,只是project name不同而已。使用import task来改变:
先定义公共的xml,这里为import.xml:
<!-- this project name is unuseful --> <project name="import"> <property file="../common.properties" /> <property name="project" value="../projects/${ant.project.name}" /> <property name="tomcat" value="../apache-tomcat-5.5.26/webapps" /> <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" /> <target name="checkout"> <svn username="${user}" password="${password}"> <checkout url="${svnloc}/${ant.project.name}" destPath="${project}"/> </svn> </target> <target name="update"> <svn username="${user}" password="${password}"> <update dir="${project}"/> </svn> <!-- war --> <ant dir="${project}"/> </target> <target name="deploy"> <copy todir="${tomcat}"> <fileset dir="${project}/war"/> </copy> </target> </project>
在cc.xml和dd.xml中import进来即可:
cc.xml
<project name="cc" basedir="."> <import file="import.xml" /> </project>
dd.xml
<project name="dd" basedir="."> <import file="import.xml" /> </project>
需要注意的是,import.xml中的project name是没用的,${ant.project.name}不是指该值,而是指最上层引用的xml的project name。比如cc.xml引用了import.xml,那么${ant.project.name}是指cc.xml的project name。import task有点复制代码的味道。
参考:
http://www.blogjava.net/chelsea/archive/2008/03/06/184374.html
http://cruisecontrol.sourceforge.net/main/plugins.html
http://ant.apache.org/manual/index.html
发表评论
-
mybatis支持属性使用驼峰的命名
2012-09-14 17:14 31688参考:http://blog.chinaunix.net/ui ... -
poi使用问题总结
2012-05-17 13:57 2458poi是由apache开发的分析微软office文档的工具包, ... -
@Transactional注解事务不起作用的解决
2012-04-23 11:57 5777可能的原因: 1.数据库引擎要支持事务 如果是mysql,注意 ... -
更新jsp后tomcat没有重新编译的问题
2011-12-26 11:55 4215jsp不像java文件、配置文件需要重新reload,只要刷新 ... -
java并发测试用例模板
2011-10-10 11:34 15440这里申请了1000个线程,并且执行1000次任务。当所有任务完 ... -
spring mvc输出xml
2011-10-09 12:11 6159方式一: 参考:http://www.mkyong.com/s ... -
spring mvc获取header
2011-10-09 11:52 21528两种方法: 1.在方法参数中加入@RequestHeader ... -
java7新特性
2011-09-13 15:40 1125参考:http://radar.oreilly.com/201 ... -
使用jstack分析cpu消耗过高的问题
2011-08-31 18:35 24199我们使用jdk自带的jstack来分析。当linux出现cpu ... -
使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
2011-05-05 17:51 24714DailyRollingFileAppender生成的文件是不 ... -
使用apache StringUtils.split替代String.split
2010-11-05 09:39 12462如果你对下面几个结果有疑惑的话,建议使用apache comm ... -
让MessageFormat输出单引号
2010-10-08 10:36 1775比如 {0} visited {1}'s home page ... -
jconsole连接远程进程
2010-10-08 09:39 1594连接远程进程时,需要输入ip和port。 其中ip查看方式: ... -
修改cxf rest的返回时间格式
2010-08-23 21:06 3719参考:http://stackoverflow.com/que ... -
如何在cxf rest中获取http header信息?
2010-08-17 14:46 6898两种方式: 1)使用@HeaderParam BaseResp ... -
Jsoup的源码修改-支持Cookie等头信息的设置
2010-08-11 15:43 3332Jsoup是一个开源的html解析工具,使用css子选择器的语 ... -
普通java项目生成jar包的基本写法
2010-01-31 20:05 1656将以下内容保存为build.xml: <?xml ve ...
相关推荐
cruisecontrol配置文件,很实用
cruisecontrol配置定时运行
有关CruiseControl及ant配置的资料,少量内容来自朋友
cruisecontrol、ant、svn持续集成 己两个多星期以来对持续集成的概念和应用有了一些了解。下面主要对自己配置持续集成的环境进行总结。(看上去简单,但是对我开始对持续集成都没什么了解的人来说确实费了不少周折)
cruisecontrol配置电子邮件的xml文件
cruisecontrol.war 文件,你可以直接将这个文件 COPY 到你的%TOMCAT_HOME%\webapps 目录下,不 过这种方式通常都会出错,前 面我们讲过CC的WEB组件要访问我们的项目build 的状态文件,而下载的 CC2.2 里面自带的 ...
cruisecontrol+maven2配置做持续集成
持续集成工具-CruiseControl配置常见问题
主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...
CruiseControl.NET 是 .NET...CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。
[CruiseControl]binary安装和启动
CruiseControl简介及使用举例
CruiseControl-2.8.4.exe
cruisecontrol简介
CruiseControl笔记,详细介绍了CruiseControl。net的配置,希望对大家有所帮助
CruiseControl.NET-CCTray-1.8.4.0-Setup.exe
CruiseControl.NET-1.4.4-Setup.exe
1.认识CruiseControl 2.CruiseControl的安装 3. CruiseControl的配置 4.总结
可以完成代码的自动编译,打包。这些是我在网上搜集到的资料,我用了其中一种方法。其他的不知道行不行。有待考察。希望对你有所帮助
With the emergence of vehicle-to-vehicle communi-cation technology, cooperative adaptive cruise control (CACC) cars can be expected in the near future. In this paper, novel criteria for string ...