- 浏览: 578763 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
冰糖雪栗:
...
使用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 31771参考:http://blog.chinaunix.net/ui ... -
poi使用问题总结
2012-05-17 13:57 2521poi是由apache开发的分析微软office文档的工具包, ... -
@Transactional注解事务不起作用的解决
2012-04-23 11:57 5863可能的原因: 1.数据库引擎要支持事务 如果是mysql,注意 ... -
更新jsp后tomcat没有重新编译的问题
2011-12-26 11:55 4280jsp不像java文件、配置文件需要重新reload,只要刷新 ... -
java并发测试用例模板
2011-10-10 11:34 15535这里申请了1000个线程,并且执行1000次任务。当所有任务完 ... -
spring mvc输出xml
2011-10-09 12:11 6199方式一: 参考:http://www.mkyong.com/s ... -
spring mvc获取header
2011-10-09 11:52 21618两种方法: 1.在方法参数中加入@RequestHeader ... -
java7新特性
2011-09-13 15:40 1162参考:http://radar.oreilly.com/201 ... -
使用jstack分析cpu消耗过高的问题
2011-08-31 18:35 24301我们使用jdk自带的jstack来分析。当linux出现cpu ... -
使用log4j扩展包的RollingFileAppender生成带时间戳的日志文件
2011-05-05 17:51 24776DailyRollingFileAppender生成的文件是不 ... -
使用apache StringUtils.split替代String.split
2010-11-05 09:39 12540如果你对下面几个结果有疑惑的话,建议使用apache comm ... -
让MessageFormat输出单引号
2010-10-08 10:36 1845比如 {0} visited {1}'s home page ... -
jconsole连接远程进程
2010-10-08 09:39 1671连接远程进程时,需要输入ip和port。 其中ip查看方式: ... -
修改cxf rest的返回时间格式
2010-08-23 21:06 3769参考:http://stackoverflow.com/que ... -
如何在cxf rest中获取http header信息?
2010-08-17 14:46 6965两种方式: 1)使用@HeaderParam BaseResp ... -
Jsoup的源码修改-支持Cookie等头信息的设置
2010-08-11 15:43 3385Jsoup是一个开源的html解析工具,使用css子选择器的语 ... -
普通java项目生成jar包的基本写法
2010-01-31 20:05 1694将以下内容保存为build.xml: <?xml ve ...
相关推荐
本压缩包“cruisecontrol配置文件.rar”包含了一些关键文件,它们是CruiseControl配置和运行的核心部分。 `main.jsp` 是CruiseControl Web界面的一个页面,用户可以通过这个页面查看构建状态、历史记录以及错误报告...
CruiseControl是一款持续集成工具,它能够自动化地构建、测试和部署软件项目,极大地提高了开发效率和产品质量。在本文中,我们将深入探讨如何配置CruiseControl以实现定时运行,确保项目始终保持最新状态。 首先,...
通过本文档,我们可以了解到CruiseControl和Ant在持续集成中的应用。CruiseControl作为一个强大的CI工具,可以帮助团队自动化构建流程,提高软件开发效率。而Ant作为构建工具,则负责具体的构建任务执行。两者结合...
【CruiseControl + ANT + SVN】是一个集成开发环境(IDE)自动化构建和版本控制的解决方案。这个组合在软件开发过程中发挥着关键作用,确保代码的持续集成和版本管理。下面将详细阐述这三个组件以及它们如何协同工作...
- **启动脚本**:`cruisecontrol.bat` 和 `cruisecontrol.sh` 脚本用于启动 CruiseControl 服务。它们会调用 `config.xml` 和 `dashboard-config.xml` 文件中的配置信息。 - **SSH 支持**:如果使用基于 SSH 的 CVS ...
安装完成后,系统会包含一系列必要的文件和目录,比如`cruisecontrol.bat`用于启动服务,`config.xml`作为主要的配置文件,`apache-ant-1.6.5`是CruiseControl依赖的Ant环境,`docs`包含使用文档和示例,`lib`存放...
- **配置文件修改**:在`%CruiseControl_Home%/config.xml`中,定义了CruiseControl的核心配置,包括项目名称、监听器、启动程序、修改集、调度、日志记录和发布者等。例如: - `<property>`标签用于设置环境变量。...
2. **配置文件**:CruiseControl.rb的配置文件通常是`config/cruise_control.rb`,它定义了项目的构建流程,包括源码管理、构建触发器、构建任务、测试和报告等。 3. **构建生命周期**:CruiseControl.rb的构建过程...
3. **集成示例**:具体案例中通常会包含如何配置CruiseControl来执行ANT构建脚本的例子。 #### 四、CruiseControl的实施细节 CruiseControl的实施过程中,涉及到了几个重要的概念和技术点: 1. **分布式架构**:...
安装之后,CruiseControl预先配置了一个配置文件,轮询CVS(或其它版本控制系统)存储库并执行ANT构建脚本。服务环境不需要安装Web服务器,CruiseControl已经内嵌了Jetty web服务程序。 3.CruiseControl的配置 当...
- **持续集成**:Ant常与CruiseControl、Jenkins等持续集成工具结合,自动执行构建和测试。 - **项目管理**:大型项目中,Ant可以帮助管理和协调各个模块的构建过程。 通过阅读`命令.txt`、`ant知识.txt`、`ant...
总结来说,CruiseControl的电子邮件配置涉及`config.xml`文件中的`<notification>`和`<email>`标签,通过定制这些设置,我们可以实现构建状态的通知,确保团队成员始终保持对项目进度的了解。正确配置邮件通知是持续...
cruisecontrol.war 文件,你可以直接将这个文件 COPY 到你的%TOMCAT_HOME%\webapps 目录下,不 过这种方式通常都会出错,前 面我们讲过CC的WEB组件要访问我们的项目build 的状态文件,而下载的 CC2.2 里面自带的 ...
同时,需要在 CruiseControl 中配置构建脚本,以便自动地构建和测试软件。 在这个例子中,我们使用 SVN 和 CruiseControl 搭建了一个持续集成开发环境。首先,我们安装了 SVN 服务器,并且创建了一个 SVN 仓库。...
6. **向CruiseControl中加入新项目**:"CruiseControl step by step(3)"部分可能详细介绍了如何添加新的项目到CruiseControl服务器,包括项目配置文件的修改和项目构建规则的设定。 7. **了解CruiseControl的配置...
通过熟悉其架构、配置文件和插件机制,你可以有效地利用CruiseControl来实现自动化构建和测试流程。 请注意,本教程仅为CruiseControl学习的起点,实际使用中可能还需要了解更深入的配置技巧、插件用法以及与其他...
CruiseControl 的安装和配置是其使用的关键环节。通常,你需要下载CruiseControl的二进制包,然后根据项目需求配置XML配置文件。配置文件包含了项目源码位置、构建命令、测试脚本、邮件通知等信息。例如,你可以设置...