jenkins+maven+tomcat做持续集成是web网站不可缺少的了,大部分网站都详细的写了如何配置。这里记一下遇到的问题
1.jenkins 签出svn代码,这个还是比较简单的,网上配置步骤也多,配置成这样,在主页点击立即构建,就会把代码从SVN上加入工作空间了。
2.加入触发器,我设置的是只要SVN有更新就立即构建代码,也可以按照项目需求进行变更,如一天一次。
3.jenkins里使用maven打包,并且跳过测试,通过这种方法会在工作空间的target目录下生成一个*.war包(这个war包就是打包好的程序,可以手动复制该文件到tomcat的webapp目录)关于maven的使用,另有其他网站介绍,主要就是修改pom.xml文件和使用goals命令,是项目管理的一大利器
4.jenkins自动部署tomcat.这里比较麻烦 ,需要先安装jenkins插件,Deploy war/ear to a container。然后在配置里填写如下,war文件用**/*.war就好了。tomcat服务器的管理员账户密码以及tomcat的登录地址加上端口号。如果本地调试,地址就是localhost了。
但是,这样部署之后,tomcat实际上并不能部署成功,会报错,
错误1.如下:
这个时候,需要修改C:Program Filesapache-tomcat-7.0.70conf 目录下的context.xml文件
添加
这个错误解决之后,还有可能出现另外一个错误
错误2,如下:
这很奇怪,需要用到ant的jar包,好吧jenkins部署tomcat环境要用到ant,那就往pom.xml里添加ant的相关配置
org.apache.ant
ant
1.10.1
这样添加之后,再运行项目的立即构建功能,会发现,jenkins能够自动把tomcat目录下的老的无用工程文件删除,重新注入新的工程文件,其实和 maven 的tomcat7:redeploy功能是完全相同的,只是jenkins下使用maven tomcat7:redeploy总报错,所以无奈只能用jenkins插件里的deploy方法
错误1.如下:
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:849)
at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1060)
这个时候,需要修改C:Program Filesapache-tomcat-7.0.70conf 目录下的context.xml文件
添加
这个错误解决之后,还有可能出现另外一个错误
错误2,如下:
SEVERE: Resource '/WEB-INF/lib/ant-1.7.0.jar' is missing
这很奇怪,需要用到ant的jar包,好吧jenkins部署tomcat环境要用到ant,那就往pom.xml里添加ant的相关配置
org.apache.ant
ant
1.10.1
这样添加之后,再运行项目的立即构建功能,会发现,jenkins能够自动把tomcat目录下的老的无用工程文件删除,重新注入新的工程文件,其实和 maven 的tomcat7:redeploy功能是完全相同的,只是jenkins下使用maven tomcat7:redeploy总报错,所以无奈只能用jenkins插件里的deploy方法