`

hudson + maven +svn 持续开发测试平台

阅读更多

 

1.安装jdk
2.安装maven
3.安装tomcat
4.把hudson.war  放到tomcat 发布程序目录下

5。登录hudson 地址:hppt://localhost:8080/hudson

6.首次登录会让下载需要的插件、svn的、deploy的等
7.完成插件安装 配置hudson的系统设置,主要是jdk设置、maven设置
8.新建任务,主要配置svn、deploy war的配置
  配置svn url的时候 是支持 svn:和http两种方式的,跟插件的版本有关系,而且hudson的容器tomcat要配置URLEndding 为UTF-8,才会支持带中文的 svn地址
  配置tomcat的时候,需要tomcat的用户名和密码,这块是需要配置tomcat的tomcat-users.xml文件的,把用户配置那的注释去掉,并且tomcat用户要拥有manager-script角色

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat,role1,manager-script"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
另:tomcat会报内存溢出;

PermGen space
进行清理,所以当我们的应用中有很多的class时,很可能就会出现PermGen space的错误。
    解决方法:
 1. 手动设置MaxPermSize的大小
    修改 TOMCAT_HOME/bin/catalina.bat(Linux上为catalina.sh)文件,在非注释区第一行
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=512m"

加jdk环境变量:
用文本编辑器打开/etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/java/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile(该命令使 环境变量生效)

 

 

9.在windows 环境下,hudons重复部署时 ,会不成功,不能完全删除 部署项目 中的文件,导致 hudson重新部署失败

   解决:大概是因为Tomcat还在使用这个目录,无法删除,必须修改$TOMCAT_HOME/conf/context.xml:

  1. <Context antiJARLocking="true" antiResourceLocking="true"> 

说明: 

Tomcat中antiResourceLocking和antiJARLocking的作用

 

Tomcat应用更新时,把新的WAR包放到webapps目录下,Tomcat就会自动把原来的同名webapp删除,并把WAR包解压,运行新的 webapp。

但是,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。

解决方法是在<Context>元素中增加一个属性antiResourceLocking="true" antiJARLocking="true",默认是"false"。

这样就可以热部署了。

实际上,这两个参数就是配置Tomcat的资源锁定和Jar包锁定策略。

 

(1)antiJARLocking

先来看看应用的antiJARLocking属性设置为true时,Tomcat是怎么处理的。

针对antiJARLocking属性的处理集中在WebappClassLoader的getResource和findResourceInternal方法里,主要原理是将包含在Jar包里的资源抽取放到应用的工作目录(work里应用对应的目录)下去。

把这个属性设置为true之后,部署应用就可以在work\Catalina\localhost\struts2-blank\loader目录下看到被解压的Jar包内容。

antiJARLocking属性在有的时候并不会生效,从WebappClassLoader的getResource和findResource方法逻辑里可以看出一些端倪,在一些情况下(通过对Loader的delegate、searchExternalFirst等相关属性进行配置),资源的获取并不是WebappClassLoader去做的,而是其父加载器的getResource方法或父类的findResource方法去做的,WebappClassLoader的父类是URLClassLoader、父加载器是URLClassLoader实例。

(2)antiResourceLocking

当antiResourceLocking设置为true的时候,Tomcat不会锁定应用下的任何文件。那Tomcat是怎么做到这一点的呢?

在Tomcat的架构里,应用也是一个级别的容器,对应的接口是Context;各级容器本身都具备生命周期,而且配置了多个生命周期监听器来监听容器不同的生命周期过程。Tomcat在初始化的时候,给Context增加了一个生命周期监听器org.apache.catalina.startup.ContextConfig;然后在Context真正开始启动之前,会有一个BEFORE_START_EVENT状态,ContextConfig监听到这个状态的事件后,就会针对antiResourceLocking进行处理。

总结一下,就是如果应用的antiResourceLocking属性设置为true,就将应用的doc base移到临时目录下,让Tomca不会占用webapps下的文件。Tomcat里java.io.tmpdir默认指向Tomcat的temp目录。

副作用

 

 

从上面的分析来看,antiResourceLocking为true有几个副作用:

1) 会延长应用的启动时间,因为多了临时目录的清理和往临时目录拷贝应用内容的操作;a

2) 如果不知道这个属性的原理,修改webapps下应用的JSP,那就不会动态重加载到新的页面内容了,因为应用的doc base已经不再在webapps下了;

3) 停止Tomcat的时候,临时目录下实际的doc base会被删掉,

结合第二条和第三条,如果要修改应用的JSP,那必须将改动同时拷贝到两个目录下(原始doc base和临时目录下的doc base)。

所以Tomcat里这个属性缺省为false。在使用Tomcat 6.0.24之前的版本时,如果要用这个属性解决文件被锁的问题,三思而行。

分享到:
评论

相关推荐

    Hudson+Maven+SVN 自动部署

    Hudson、Maven和SVN(Subversion)是三个重要的工具,它们共同协作可以实现无缝的持续集成和自动部署。 **Hudson** 是一个开源的持续集成服务器,它的主要任务是监控和自动化软件项目的构建过程。通过定期检查代码...

    Hudson+Maven+SVN_快速搭建持续集成环境

    Hudson+Maven+SVN_快速搭建持续集成环境.docx

    Hudson+Maven+SVN

    总结,通过Hudson、Maven和SVN的结合,开发者可以构建出一个高效的持续集成环境,提升开发效率,减少手动错误,并确保代码质量。这种集成方式不仅适用于Java项目,也适用于其他支持Maven构建的项目,是现代敏捷开发...

    Hudson+Maven+SVN 搭建持续集成环境

    Hudson 是一款开源的持续集成工具,它能够自动化软件构建、测试和部署的过程,极大地提高了开发效率和软件质量。与 Maven 和 SVN 结合,我们可以构建一个强大的持续集成环境。Maven 是一个项目管理和综合工具,负责...

    Hudson+Sonar+Maven+SVN详细集成介绍

    Hudson+Sonar+Maven+SVN详细集成介绍

    Hudson+Maven+SVN 快速搭建持续集成环境

    结合Hudson、Maven和SVN,可以构建出一套高效、自动化的持续集成环境。Hudson负责监听代码变更并启动构建,Maven处理构建过程,而SVN则作为代码版本控制中心。这种组合可以确保团队的代码质量和项目进度,降低集成...

    hudson+maven+svn自动化部署

    Jenkins 是一个开源的持续集成/持续部署工具,它可以自动化整个软件交付过程,提高开发效率和质量。使用 Jenkins 实现 Java 项目自动化部署的主要步骤包括: 1. **项目配置**: - 设置源码仓库 (如 SVN)。 - 定义...

    hudson+maven+svn的简单自动化部署,目前本人已经使用在现网了

    总的来说,通过Hudson、Maven和SVN的集成,开发者可以构建出一套高效且可靠的自动化部署流程,极大地提高了开发效率和软件质量。只需按照上述步骤操作,便能在实际项目中实现这一自动化部署方案。

    Hudson+Maven+Svn配置[归纳].pdf

    【Hudson+Maven+Svn配置】的整合是软件开发中的一个重要环节,它涉及到了持续集成、自动化构建和版本控制等多个关键领域。以下是对这些工具的详细解释和配置步骤: 1. **Hudson**:Hudson是一个开源的持续集成...

    Jenkins+Maven+SVN+Tomcat持续集成实战

    《Jenkins+Maven+SVN+Tomcat持续集成实战》 在现代软件开发中,持续集成(Continuous Integration,简称CI)已经成为提升效率、保障质量的重要手段。本文将详细讲解如何利用Jenkins、Maven、SVN和Tomcat等工具进行...

    持续集成-SVN+Maven+Hudson+Sonar PPT讲解

    持续集成-SVN+Maven+Hudson+Sonar PPT讲解,持续集成的原理

    nexus+svn+jenkin_hudson+maven+禅道项目管理软件环境搭建一

    本篇将详细讲解如何结合Nexus、SVN、Jenkins(Hudson)、Maven以及禅道这五款工具,搭建一个适用于敏捷开发流程和持续集成理念的环境。这个环境能够极大地提升开发效率,简化项目管理流程。 **Nexus**: Nexus是一款...

    nexus+svn+jenkin_hudson+maven+禅道项目管理软件环境搭建二

    在本篇中,我们将深入探讨如何构建一个完整的IT开发流程,包括使用Nexus作为Maven仓库、Subversion(SVN)作为版本控制系统、Jenkins(Hudson)进行持续集成、Maven作为构建工具,以及禅道(ZenDo)作为项目管理软件...

    Linux 安装hudson+maven+nexus

    这个过程主要包括三个主要部分:安装Hudson作为持续集成服务器,配置Maven为项目构建工具,以及安装Nexus作为私有仓库管理器。 首先,安装Hudson。Hudson是一个开源的持续集成工具,它能自动监控和执行项目的构建...

    maven+springmvc+mybatis+svn+hudson

    本文将详细讲解一个基于maven、springmvc、mybatis技术栈的电商项目,结合svn版本控制和hudson持续集成的实施过程。广西移动电子商城项目旨在构建一个网上商城,以应对通信行业竞争格局的变化,强化服务竞争力。系统...

    hudson svn maven 自动构建

    【标题】"Hudson SVN Maven 自动构建"指的是在持续集成环境中使用Hudson(现在称为Jenkins)作为工具,结合Subversion(SVN)作为版本控制系统,Maven作为项目管理和构建工具,实现代码的自动构建过程。这个流程的...

    hudson svn maven deploy BOM

    【标题】"hudson svn maven deploy BOM" 涉及到的IT知识点主要集中在持续集成工具Hudson、版本控制系统Subversion(SVN)、构建工具Maven以及部署插件和字符编码处理方面。以下是对这些关键概念的详细解释: 1. **...

Global site tag (gtag.js) - Google Analytics